mini210s是友善之臂公司推出的基於三星s5pv210的cortex a8 平臺的開發板,其實很感謝他們對此做出的努力,才使得向我這樣的窮孩子可以早些接觸a8(當時買的時候不到600)。可是便宜歸便宜,有好多東東想仔細的搞明白,還要狠下功夫呀,畢竟知識也是財富呀! git
uboot是arm平臺常常使用的bootloader,友善之臂並無給用戶提供開放的uboot,並且以二進制的形式發佈的他們公司本身的superboot,不過說實在的,確實是很好用。可是做爲想從底層作起的我來講,熟悉並掌握uboot是我必須要攻克的呀。 網絡
萬事開頭難,關鍵是找準方法呀。總的來講本身對本身仍是有那麼的不自信,想在網絡上可以找到前輩們留下的財富呀。功夫不負有心人,我在一個git網站上找到了可以移植到mini210的uboot,opencsbc-u-boot-mini210_linaro-2011.10-stable.tar.gz。具體的下載網站我忘記了。 app
不過你們要注意了,這是移植到mini210的uboot,而不是mini210s上的,起初我編譯下載到個人板子上,一直只顯示ok,再沒有其餘信息輸出,其中還有好多地方須要修改,我那個暈呀,沒辦法,本身只能搞個led燈指示程序錯誤可能出現的地方,結果定位到bl1過程當中copy bl2的過程有誤,是因爲這個版本的uboot中對sdram的配置有誤形成的。 網站
這是頭文件mini210.h中sdram參數配置的部分,須要將DMC0_MEMCONTROL、DMC0_MEMCONFIG_0、DMC0_MEMCONFIG_1的值進行相應的調整。 code
#if defined(CONFIG_MCP_SINGLE) #define DMC0_MEMCONTROL 0x00202400 // MemControl BL=4, 1Chip, DDR2 Type, dynamic self refresh, force precharge, dynamic power down off #define DMC0_MEMCONFIG_0 0x20E00323 // MemConfig0 512MB config, 8 banks,Mapping Method[12:15]0:linear, 1:linterleaved, 2:Mixed #define DMC0_MEMCONFIG_1 0x00E00323 // MemConfig1 #if 0 #define DMC0_TIMINGA_REF 0x00000618 // TimingAref 7.8us*133MHz=1038(0x40E), 100MHz=780(0x30C), 20MHz=156(0x9C), 10MHz=78(0x4E) #define DMC0_TIMING_ROW 0x28233287 // TimingRow for @200MHz #define DMC0_TIMING_DATA 0x23240304 // TimingData CL=3 #define DMC0_TIMING_PWR 0x09C80232 // TimingPower #else #define DMC0_TIMINGA_REF 0x00000618 // TimingAref 7.8us*133MHz=1038(0x40E), 100MHz=780(0x30C), 20MHz=156(0x9C), 10MHz=78(0x4E) #define DMC0_TIMING_ROW 0x2B34438A // TimingRow for @200MHz #define DMC0_TIMING_DATA 0x24240000 // TimingData CL=3 #define DMC0_TIMING_PWR 0x0BDC0343 // TimingPower #endif #define DMC1_MEMCONTROL 0x00202400 // MemControl BL=4, 2 chip, DDR2 type, dynamic self refresh, force precharge, dynamic power down off #define DMC1_MEMCONFIG_0 0x40E00323 // MemConfig0 512MB config, 8 banks,Mapping Method[12:15]0:linear, 1:linterleaved, 2:Mixed #define DMC1_MEMCONFIG_1 0x00F00323 // MemConfig1 #if 0 #define DMC1_TIMINGA_REF 0x00000618 // TimingAref 7.8us*133MHz=1038(0x40E), 100MHz=780(0x30C), 20MHz=156(0x9C), 10MHz=78(0x4 #define DMC1_TIMING_ROW 0x28233289 // TimingRow for @200MHz #define DMC1_TIMING_DATA 0x23240304 // TimingData CL=3 #define DMC1_TIMING_PWR 0x08280232 // TimingPower #else #define DMC1_TIMINGA_REF 0x00000618 // TimingAref 7.8us*133MHz=1038(0x40E), 100MHz=780(0x30C), 20MHz=156(0x9C), 10MHz=78(0x4E) #define DMC1_TIMING_ROW 0x2B34438A // TimingRow for @200MHz #define DMC1_TIMING_DATA 0x24240000 // TimingData CL=3 #define DMC1_TIMING_PWR 0x0BDC0343 // TimingPower #endif #if defined(CONFIG_CLK_800_100_166_133) || defined(CONFIG_CLK_400_100_166_133) #define DMC0_MEMCONFIG_0 0x20E01323 // MemConfig0 256MB config, 8 banks,Mapping Method[12:15]0:linear, 1:linterleaved, 2:Mixed #define DMC0_MEMCONFIG_1 0x40F01323 // MemConfig1 #define DMC0_TIMINGA_REF 0x0000030C // TimingAref 7.8us*133MHz=1038(0x40E), 100MHz=780(0x30C), 20MHz=156(0x9C), 10MHz=78(0x4E) #define DMC0_TIMING_ROW 0x28233287 // TimingRow for @200MHz #define DMC0_TIMING_DATA 0x23240304 // TimingData CL=3 #define DMC0_TIMING_PWR 0x09C80232 // TimingPower #define DMC1_MEMCONTROL 0x00202400 // MemControl BL=4, 2 chip, DDR2 type, dynamic self refresh, force precharge, dynamic power down off #define DMC1_MEMCONFIG_0 0x40C01323 // MemConfig0 512MB config, 8 banks,Mapping Method[12:15]0:linear, 1:linterleaved, 2:Mixed #define DMC1_MEMCONFIG_1 0x00E01323 // MemConfig1 #define DMC1_TIMINGA_REF 0x0000030C // TimingAref 7.8us*133MHz=1038(0x40E), 100MHz=780(0x30C), 20MHz=156(0x9C), 10MHz=78(0x4 #define DMC1_TIMING_ROW 0x28233289 // TimingRow for @200MHz #define DMC1_TIMING_DATA 0x23240304 // TimingData CL=3 #define DMC1_TIMING_PWR 0x08280232 // TimingPower #endif #else #error "You should define memory type (AC type or H type)" #endif
還有須要更改的地方就是 ip
/* MINI210 has 4 bank of DRAM */
#define CONFIG_NR_DRAM_BANKS 1
#define SDRAM_BANK_SIZE 0x20000000 /* 512MB */
#define PHYS_SDRAM_1 MEMORY_BASE_ADDRESS
#define PHYS_SDRAM_1_SIZE SDRAM_BANK_SIZE
#define PHYS_SDRAM_2 (MEMORY_BASE_ADDRESS + 0x20000000) /* SDRAM Bank #2 */
#define PHYS_SDRAM_2_SIZE SDRAM_BANK_SIZE 開發
這是最終uboot運行起來的截圖,其uboot具體的原理就不說了,網上資料不少的我把本身最新準備的資料都上傳上去,供你們參考。 it
http://dl.vmall.com/c0s5b6a37t 編譯
http://dl.vmall.com/c06y9nugh5 table
http://dl.vmall.com/c0acbe6syo