ARM7TDMI R3内核
ARM7EJS内核
ARM946E-S内核
ARM966E-S内核
ARM9TDMI内核
ARM940T内核
ARM指令集速查卡
ARM925T内核(TI925T)
更多
>>
技术专栏RSS订阅 |
|
首页>技术专栏>U-boot>U-boot移植日记(s3c44b0)
高速程序代码下载速度200KBytes/S以上、内置对于GDB Remote Serial Protocol协议支持、FoxICE仿真器完美支持GDB 的 File IO扩展协议、免费赠送Eclipse for ARM V 3.2.1集成开发环境、支持Nand Flash( S3C2410或 S3C2440可任 选一种 )的烧写,支持超低电压的处理器调试, 目标范围为:0.65 ~ 5.5V
详细信息 >> |
来修改吧。 memsetup.S 文件主要是存储器的初始化设置,其实也是 44binit.s 里面的一部分。
2 )其实 board 这里要修改的不多,先跳过 flash 部分吧,我们来看一下 cpu 设置部分吧。
u-boot-1.1.2 里面已经加入了对 s 3c 44b0 的支持,让我们来看一下 cpu/s 3c 44b0 里面的部分吧。
看到 start.S 这个文件了吗?要修改的其实并不多,按照你的板设置一下中断跳转矢量就行了,或者上网查一下吧,应该很容易看明的。其中 cpu.c 这个 文件简直不用修改,再来看一下 serial.c 这个文件吧,改一下波特率的设置就行,就是你用多少 M 的 CPU 频率的话对应的波特率参数设置问题,其实 B2 已经做得不错的了,很多子程序都不用自己写的了 ^_^ ,在我的板上是这样设置的 , 参考一下吧 :
#if CONFIG_S 3C 44B0_CLOCK_SPEED==66 ,把所有的这些 66 改成 60 ,原因,我的实验板上用的频率是 60 ( 44B0 最高频率为 64M )。然后其它分频系数,寄存器初始化设置,可以参考一下 44blib.c ,在这里我给出我的设置出来吧,可以参考一下。
case 115200:
#if CONFIG_S 3C 44B0_CLOCK_SPEED==60
divisor = 32;
UFCON0 = 0x0;
ULCON0 = 0x03;
UCON0 = 0x245;
UBRDIV0 = divisor;
我在这方面算术不好,所以都是参考人家的。
3 )好,再加上个头文件:
cd u-boot-1.1.2/include/configs
cp B2.h myboards 3c 44b0.h
这个头文件其实要改的地方还挺多的,我等下再说怎样修改。先回到 u-boot.1.1.2 目录,
4 )在 Makefile 里面加上这部分,不会的话就模仿 B2 来写吧 ^_^
在 B2 的这部分文件
B2_config:unconfig
@./mkconfig $(@:_config=) arm s 3c 44b0 B2 dave
后面加上这部分:
myboards 3c 44b0_config:unconfig
@./mkconfig $(@:_config=) arm s 3c 44b0 myboard 3c 44b0 myboard
切记在 @./mkconfig $(@:_config=) arm s 3c 44b0 myboard 3c 44b0 myboard 前面的是 Tab 来的,万万不能用空格代替,因为它是靠这个来识别命令的!
5 )好,现在可以在 u-boot-1.1.2 目录下执行如下命令:
Make distclean (还是用这个吧,比较彻底)
Make myboards 3c 44b0_config
Make
看看有没有错,有错的话按着提示来改,如果没错的话应该就能生成 u-boot.bin 这个文件,现在还不能用哦,因为这几是 B2 的一个仿制品而已(注:在我的机上到这一步可没有报错哦,你一步步按着来做的话应该也不会有什么错误吧 ^_^ )。
6 )好,现在继续修改 u-boot-1.1.2/include/configs/myboards 3c 44b0.h 这个文件。
#define CONFIG_INIT_CRITICAL1 这个在 cpu/s 3c 44b0/start.S 里面用到,如果你的 u-boot 程序不是在 sdram 中调试而是固化到 flash 中运行的话,这个必不可少。
找到 #define CONFIG_B2 1 把 B2 改成 myboards 3c 44b0 吧(不然就不会编译你的板了)
找到 #define CONFIG_S 3C 44B0_CLOCK_SPEED 75 你的 44b0x 应该没有 75M 吧 我的是改成 60 的
找到 Size of malloc() pool 这部分设置,改成这样吧,反正我是照着人家来做的,你自己研究下吧 ^_^ 。
#define CFG_MONITOR_LEN(256 * 1024)/* Reserve 256 kB for Monitor*/
#define CFG_ENV_SIZE (64*1024)/* 1024 bytes may be used for env vars*/
#define CFG_MALLOC_LEN(CFG_ENV_SIZE + 128*1024 )
#define CFG_GBL_DATA_SIZE128/* size in bytes reserved for initial data */
#define CFG_ENV_IS_IN_FLASH 1 这个必不可少,如果你想把你的参数保存到 flash 的话(有些板是保存到 EEPRAM 中去的,但是 s 3c 44b0 的话还是保存到 flash 吧)
#define CFG_ENV_ADDR(PHYS_FLASH_1+0x40000) 这个就是你的参数保存在 flash 里的起始地址了
#define CFG_ENV_OFFSET0x40000 这个我后来看它源程序发现如果你上一步没有设置它的起始地址的话就会用它来作默认地址的了
#define CONFIG_AUTO_COMPLETE
其它地方没有深究哦,有些好像不要也行,你就试试吧。
找到 Hardware drivers 部分,这应该是网络芯片设置吧,参考一下这个吧(要看芯片的):
#define CONFIG_DRIVER_RTL8019 这个就要看你的板上用的是什么网卡了(这个是台湾出的,有 10M )
#define RTL8019_BASE0x06000000 这个是网卡相就寄存器的起始地址
以下部分我试过不要也行,你试下吧
#define RTL8019_BUS320
#define CONFIG_SMC_USE_16_BIT
#undef CONFIG_SHOW_ACTIVITY
#define CONFIG_NET_RETRY_COUNT10 应该是重试的次数吧
#define CONFIG_BAUDRATE115200 设置波特率
#define CONFIG_COMMANDS( CONFIG_CMD_DFL | \
CFG_CMD_DATE | \
CFG_CMD_ELF| \
CFG_CMD_NET | \
上一页 页首 下一页
|
|
|
下载说明: |
|
- 未经本站明确许可,任何网站不得非法盗链及抄袭本站资源!
|
|
|
|
|
| |