六、uboot2010.09移植
来源:互联网 发布:apache tomcat java8 编辑:程序博客网 时间:2024/06/05 20:02
根据前面的讲解,可参考uboot移植第二篇的最后,
总结:从以上过程可以看出,如果要在如果要在board目录下新建一个开发板<board_name> 的目录,或着在board目录的子目录下新建一个开发板<board_name> 的目录,需要在board.cfg配置文件中添加相应的信息,在#include/configs目录下也要建立一个文件<board_name.h>,里面存放的就是开发板board_name的配置信息。
那么我们开始移植uboot2010.09
1、cd uboot-2010.09
2、在board/samsung目录下建立目录:mkdir board/samsung/mini2440
3、cp board/samsung/smdk2410/* board/samsung/mini2440/
4、mv board/samsung/mini2440/smdk2410.c board/samsung/mini2440/mini2440.c
5、cp include/configs/smdk2410.h include/configs/mini2440.h
6、gedit board/samsung/mini2440/Makefile:smdk2410.o->mini2440.o
7、gedit boards.cfg:添加一行: mini2440 arm arm920t - samsung s3c24x0
8、vim Makefile:在#set default to nothing for native builds这行的上面添加一句
CROSS_COMPILE=arm-lwm-linux-gnueabi- //这个根据自己的交叉编译链做相应的修改
9、vim /etc/profile 最后一行添加export PATH=$PATH:/home/lwm/software/mini2440/x-tools/arm-lwm-linux-gnueabi/bin
10、source /etc/profile
注:9,10主要是讲交叉编译链的路径添加到环境变量里面,根据自己的情况可以选择取舍
11、make distclean
12、make mini2440_config
13、make
14、将生成的uboot.bin通过vivi的d命令下到ram中去运行,效果如下:
再继续下去可以参照黄刚的博客或者Tekkaman Ninja的博客进行移植,当然,对于128M的nandflash代码要做如下修改:
- 对于128m的mini2440相关代码为
- #include <config.h>
- #define NF_BASE 0x4E000000 //Nand Flash配置寄存器基地址
- #define __REGb(x) (*(volatile unsigned char *)(x))
- #define __REGi(x) (*(volatile unsigned int *)(x))
- #define NFCONF __REGi(NF_BASE + 0x0 ) //通过偏移量还是得到配置寄存器基地址
- #define NFCONT __REGi(NF_BASE + 0x4 ) //通过偏移量得到控制寄存器基地址
- #define NFCMD __REGb(NF_BASE + 0x8 ) //通过偏移量得到指令寄存器基地址
- #define NFADDR __REGb(NF_BASE + 0xC ) //通过偏移量得到地址寄存器基地址
- #define NFDATA __REGb(NF_BASE + 0x10) //通过偏移量得到数据寄存器基地址
- #define NFSTAT __REGb(NF_BASE + 0x20) //通过偏移量得到状态寄存器基地址
- #define NAND_CHIP_ENABLE (NFCONT &= ~(1<<1)) //Nand片选使能
- #define NAND_CHIP_DISABLE (NFCONT |= (1<<1)) //取消Nand片选
- #define NAND_CLEAR_RB (NFSTAT |= (1<<2))
- #define NAND_DETECT_RB { while(! (NFSTAT&(1<<2)) );}
- #define NAND_SECTOR_SIZE 2048
- #define NAND_BLOCK_MASK (NAND_SECTOR_SIZE - 1)
- /* low level nand read function */
- int nand_read_ll(unsigned char *buf, unsigned long start_addr, int size)
- {
- int i, j,page;
- if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK))
- {
- return -1; //地址或长度不对齐
- }
- NAND_CHIP_ENABLE; //选中Nand片选
- for(i=start_addr; i < (start_addr + size);)
- {
- //发出READ0指令
- NAND_CLEAR_RB;
- NFCMD = 0x00;
- //对Nand进行寻址
- page=i>>11;
- NFADDR = 0;
- NFADDR = 0;
- NFADDR = page & 0xFF;
- NFADDR = (page>> 8) & 0xFF;
- NFADDR = (page>> 16) & 0xFF;
- NFCMD = 0x30;
- NAND_DETECT_RB;
- for(j=0; j < NAND_SECTOR_SIZE; j++, i++)
- {
- *buf = (NFDATA & 0xFF);
- buf++;
- /********************************************************************************************************/
- if (*buf!=0)
- {
- #define GPBCON (*(volatile unsigned long *)0x56000010)
- #define GPBDAT (*(volatile unsigned long *)0x56000014)
- void led()
- {
- GPBCON = 0x154FD;
- GPBDAT = 0x1C0;
- }
- }
- /********************************************************************************************************/
- }
- }
- NAND_CHIP_DISABLE; //取消片选信号
- return 0;
- }
下面的我就不继续移植了,因为下面准备自己尝试着去写一个bootloader,所以uboot2010.09的工作到此结束,下面把努力去自己实现一个bootloader!!!加油!!!
0 0
- 六、uboot2010.09移植
- uboot2010-03移植步骤
- Uboot2010.03移植笔记
- uboot2010.3移植tiny6410
- 七、uboot2010.09移植 (2011-03-13 21:58)
- 移植uboot2010.12到飞凌6410
- uboot2010.06移植中一点感想
- 移植uboot2010.06到TQ2440开发板详解之一
- 移植uboot2010.06到TQ2440开发板详解之二
- OK6410(256MRAM2Gnandflash) uboot2010.03移植笔记
- uboot2010.06移植之从nor flash启动分析
- 移植uboot2010.06到TQ2440开发板详解之一
- 移植uboot2010.06到TQ2440开发板详解之二
- uboot2010-09 arm1176 start.S分析
- OK6410(256MRAM2Gnandflash) uboot2010.03移植笔记之error小结
- u-boot移植 ( 六 )
- Android系统移植(六)
- uboot2010.9编译错误
- linux外设权限:hokuyo权限设置(udev文件) ubuntu USB外设重映射思路
- Linux常用命令(二十八) - diff
- 2014年工作中遇到的20个问题:120-140
- UML中的图
- SIM900A超长短信发送方法
- 六、uboot2010.09移植
- 六、uboot第二阶段代码简要分析
- [小技巧] gnome terminal 里查找终端输出的内容
- storm文档(9)----消息处理保证机制
- 同步和异步的区别
- 代码的坏味道
- 验证码生成
- GPS坐标转笛卡尔坐标
- 奇怪的等式