久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

U-BOOT移植的經驗之談

作者:佚名   來源:本站原創(chuàng)   點擊數:  更新時間:2010年12月31日   【字體:

 也不知道U-BOOT移植到底是不是成功了,或者說是完全成功了。移植后的U-BOOT其他的一些功能,比如printenv,loadb,bdi,fli等命令和顯示的信息都是正確的 也能加載uclinux,但就是加載不成功有些uclinux內核能加載進去,可是不能解壓;有些根本就沒有顯示,連內核頭的一些信息都沒顯示,像是死機了,哎,也不知道是哪的原因,還要慢慢搞~~~ 上次也寫過一篇差不多的文章:http://m.zg4o1577.cn/mcu/1135.html,本文只是做為那個的補充吧~~~現在就總體的記錄一下U-BOOT移植過程中自己做的工作吧。還是用代碼的形式進行描述吧,即簡單,又講的清楚:

(說明:頂行寫的為需要修改的文件名 空一個TAB鍵寫的內容中行前沒有標記的為原樣抄的內容,做定位用的,行前加‘-’號的為要修改的內容,行前加‘+’號的為修改后的內容。所以實際上是按照patch文件的書寫方式來做的修改,便宜理解,也能夠說的更清楚點,省的多花文字來描述,寫代碼還是挺直接的)

board/44b0/44b0/44b0.c
     boot_params = 0x0c000100
board/44b0/44b0/config.mk
     TEXT_BASE = 0x0c300000
board/44b0/44b0/Makefile
     OBJS := 44b0.o flash.o
board/44b0/44b0/lowlevel_init.S
     Tcos = 11 = 0x3 (4clk)
     Tacc = 001 = 0x1 (2clk)
     Toch = 0 (0clk)
     Tcah = 0 (0clk)
     Trcd = 01 (2clk)
     Trp = 00 (2clk)
     Trc = 11 (7clk)
     MCLK = 40MHz
     refresh_count = 1424
     BWSCON_val = 0x11110090
     最后三個
     .word 0x16
     .word 0x20
     .word 0x20
board/44b0/common/flash.c
     把所有的#ifdef CONFIG_B2改成#ifdef CONFIG_44b0(板子名稱)
cpu/s3c44b0/config.mk (gcc版本過低,編譯時報錯時:)
     -PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
     +PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,$(call cc-option,-mabi=pacs-gnu))
cpu/s3c44b0/serial.c
     void serial_setbrg(void)
      {
       switch(gd->baudrate)
       case 115200:
        divisor = 21  ;Mclk = 40Mhz

    }
cpu/s3c44b0/start.S(vectors_base = 0x0c0000008)
     ldr r1,=LOCKTIME
     ldr r0,=2000
     str r0,[r1]
 
     ldr r1,=PLLCON
     ldr r0,=0x48032 ;Mclk=40Mhz
include/configs/44b0.h (cp B2.h)
     -#define CONFIG_B2
     +#define CONFIG_44b0
     -#define CONFIG_S3C44B0_CLOCK_SPEED 75
     +#define CONFIG_S3C44B0_CLOCK_SPEED 40
     -#define CONFIG_DRIVER_LAN91C96
     -#define CONFIG_LAN91C96_BASE 0x04000300
     +#define CONFIG_DRIVER_RTL8019
     +#define RTL8019_BASE 0x06000300
     -#define CONFIG_COMMANDS (CONFIG_CMD_DFL |\
          CFG_CMD_DATE |\
          CFG_CMD_ELF |\
          CFG_CMD_EEPROM |\
          CFG_CMD_I2C)
     +define CONFIG_COMMANDS ( CONFIG_CMD_DFL|CONFIG_CMD_DATE|CONFIG_CMD_NET|CONFIG_CMD_ENV|CONFIG_CMD_FLASH)
      注:如采用上述的|\換行,可能有的編譯的時候會報錯,我的就會,所以采用單行書寫
     -#define CONFIG_BOOTFILE "~~~`"
     +#define CONFIG_BOOTFILE "uclinux.bin"
     -#define CONFIG_BOOTCOMMAND "bootm 20000 f0000"
     +#define CONFIG_BOOTCOMMAND "bootm 50000"
     -#define CFG_MEMTEST_START 0x0c400000  //還不明白這個定義是什么意思
     -#define CFG_MEMTEST_END 0x0c800000  //如果刪除的話,編譯的時候會報錯 

    +#define CFG_MEMTEST_START 0x0c000000及//所以還是留著吧,適當的定義一下

    +#define CFG_MEMTEST_END  0x0c100000  //也不知道會有什么影響
     -#define CFG_LOAD_ADDR  0x0c700000
     +#define CFG_LOAD_ADDR  0x0c008000
     -#define PHYS_SDRAM_1  0xc0000000
     -#define PHYS_SDRAM_1_SIZE 0x01000000
     -#define PHYS_FLASH_1  0x00000000
     -#define PHYS_FLASH_SIZE 0x00400000
     +#define PHYS_SDRAM_1  0x0c000000
     +#define PHYS_SDRAM_1_SIZE 0x00800000
     +#define PHYS_FLASH_1  0x00000000
     +#define PHYS_FLASH_SIZE 0x00200000
     -#define CFG_MAX_FLASH_SECT 256
     +#define CFG_MAX_FLASH_SECT 32
     -#define CFG_ENV_IS_IN_EEPROM 1
     -#define CFG_ENV_OFFSET  0x0
     +#define CFG_ENV_IS_IN_FLASH 
     +#undef  CFG_ENV_IS_NOWHERE
     +#define CFG_ENV_ADDR  (CFG_FLASH_BASE + 0x20000)
     +#define CFG_ENV_SECT_SIZE 0x10000
     +#define CFG_MONITOR_BASE PHYS_SDRAM_1 ;ENV IS NOT IN EEPROM /tools/envcrc.c
Makefile
     ifeq($(ARCH),arm)
     -CROSS_COMPILE = arm-linux-
     +CROSS_COMPILE = arm-elf-
     B2_config : unconfig
      @./mkconfig $(@:_config=) arm s3c44b0 B2 dave
     +44b0_config : unconfig
      #./mkconfig $(@:_config=) arm s3c44b0 44b0 44b0
lib_arm/board.c
     +#include <asm-arm/arch-s3c44b0/hardware.h>
     static int display_banner(void)
      {
        #endif 后加上一段代碼:LED指示燈亮,蜂鳴器關
       PCONE |= (1<<10);   pe5=pcon(10:11)   
       PCONE &= ~(1<<11);
       PDATE &= ~(1<<5); ;beep=gpe5 
           //led0=pc1 led1=pc2 led2=pc3
       PCONC |= ((1<<2)|(1<<4)|(1<<6));  //pconc[1:2:3]=PCONC[765432]output=01
       PCONC &= ~((1<<3)|(1<<5)|(1<<7));
       PDATC |= (1<<1);  pdatc1=PDATC[1]=1 led0=light 
      }

按照這個修改后的U-BOOT大概功能是齊全的,也算是成功移植吧  至于到底是不是,還要繼續(xù)驗證了。

 另外,由于板子上網卡壞了,所以就沒有去修改網卡相關的了。以后用到的話再說吧~~

關閉窗口

相關文章

主站蜘蛛池模板: 91精品国产91久久久久青草 | 国产乱码精品一区二区三区中文 | 天天天天天天操 | 亚洲第一天堂 | 国产 欧美 日韩 一区 | 日韩欧美在线精品 | 中文字幕第二十页 | 蜜桃特黄a∨片免费观看 | 91se在线 | 狠狠久久 | 亚洲精品一级 | 精品国产一区二区在线 | 欧美激情精品久久久久久变态 | 亚洲一区国产 | 国产精品99久久久久久久vr | 成人蜜桃av| 国产精品小视频在线观看 | 91网站视频在线观看 | aaa在线观看 | 日韩毛片网 | 99免费在线观看视频 | 精品欧美乱码久久久久久1区2区 | 午夜激情影院 | 91视视频在线观看入口直接观看 | 成人在线精品视频 | 欧美一区二区三区在线看 | 午夜影院中文字幕 | 免费黄色a级毛片 | 国产精品美女久久久久久久网站 | 国产精品久久久久久久久久了 | 欧美福利影院 | 色天天综合 | 国产在线观看不卡一区二区三区 | 欧美日韩中文字幕在线 | japanhdxxxx裸体 | 伊人一区| 中文字幕视频在线看5 | 国产一区 在线视频 | 成人午夜影院 | 99免费| 日韩日韩日韩日韩日韩日韩日韩 |