ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:18.35KB ,
资源ID:7308425      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7308425.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(uboot116的移植目标板TQ24401 编译测试.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

uboot116的移植目标板TQ24401 编译测试.docx

1、uboot116的移植目标板TQ24401 编译测试u-boot1.1.6的移植(目标板TQ2440)1 编译测试Linux内核 2009-12-15 01:18:50 阅读146 评论0 字号:大中小订阅 如何将u-booot1.1.6从smdk2410移植到tq2440目标板?阅读了天嵌公司的tq2440开发板u-boot代码,以下是我的总结。 为实践需要,另起自己的目标板名字,故用jzy2440替代tq2440。蓝色的为修改部分,红色为jzy23注释。(一)编译测试1. /board目录下(1).将smdk2410目录复制为jzy2440目录。(2). 将jzy2440目录下的Makef

2、ile中的COBJS改为: COBJS :=jzy2440.o flash.o2./include/configs目录下将smdk2410.h复制为jzy2440.h。3.修改顶层Makefile 增加: jzy2440_config: unconfig$(MKCONFIG) $(:_config=) arm arm920t jzy2440 NULL s3c24X0 这两句的含义,可参见韦东山编著的嵌入式Linux应用开发完全手册的bootloader部分-第15章,第249页u-boot配置过程。4.使用支持softfloat的交叉编译器:crosstools_3.4.1_soft(光盘附带

3、)。5.编译测试 配置make jzy2440_config编译:make 具体u-boot编译,连接过程参看韦东山嵌入式Linux应用开发完全手册第254页。6.清除上次编译的结果:make mrproperu-boot1.1.6的移植(目标板TQ2440)4 .lds设置Linux内核 2009-12-15 01:17:34 阅读43 评论0 字号:大中小订阅 (四).lds文件设置 注:蓝色部分为修改或者改动部分,红色部分为jzy23注解。在board/jzy2440/u-boot.lds里修改: SECTIONS. = 0x00000000;. = ALIGN(4);.text : c

4、pu/arm920t/start.o(.text) board/jzy2440/boot_init.o (.text)/添加这句 *(.text). = ALIGN(4);.rodata : *(.rodata) . = ALIGN(4);.data : *(.data) . = ALIGN(4);.got : *(.got) . = .;_u_boot_cmd_start = .;.u_boot_cmd : *(.u_boot_cmd) _u_boot_cmd_end = .;. = ALIGN(4);_bss_start = .;.bss : *(.bss) _end = .;u-boot

5、1.1.6的移植(目标板TQ2440)5代码重定向Linux内核 2009-12-15 01:15:55 阅读81 评论0 字号:大中小订阅 (五) 代码重定向 注:蓝色部分为修改或者改动部分,红色部分为jzy23注解。1. start.S里修改:#ifndef CONFIG_SKIP_RELOCATE_UBOOTrelocate:/* relocate U-Boot to RAM */adrr0, _start/* r0 - current position of code (r0=0) */ldrr1, _TEXT_BASE/* test if we run from flash or R

6、AM(r1=0x33f80000 */cmp r0, r1 /*dont reloc during debug */beq clear_bss /*(原来为stack_setup)*/ldrr2, _armboot_start /*(r2为_start的地址=0x3ff80000)*/ldrr3, _bss_start /*(在连接文件中定义)*/subr2, r3, r2#if 1/*(增加)*/bl CopyCode2Ram/* r0: source, r1: dest, r2: size */ /*(跳转到CopyCode2Ram函数)*/#elseaddr2, r0, r2/ r2 -

7、 source end address */copy_loop:ldmiar0!, r3-r10/ copy from source address r0 */stmiar1!, r3-r10/ copy to target address r1 */cmpr0, r2/ until source end addreee r2 */blecopy_loop#endif#endif/ CONFIG_SKIP_RELOCATE_UBOOT */2.在board/jzy2440/boot_init.c中与CopyCode2Ram()相关的函数与定义如下:#include #include #defi

8、ne GSTATUS1 (*(volatile unsigned int *)0x560000B0)#define BUSY 1/ 供外部调用的函数 */void nand_init_ll(void);int nand_read_ll(unsigned char *buf, unsigned long start_addr, int size);/ NAND Flash操作的总入口, 它们将调用S3C2410或S3C2440的相应函数 */static void nand_reset(void);static void wait_idle(void);static void nand_sele

9、ct_chip(void);static void nand_deselect_chip(void);static void write_cmd(int cmd);static void write_addr(unsigned int addr);static unsigned char read_data(void);/ S3C2410的NAND Flash处理函数 */static void s3c2410_nand_reset(void);static void s3c2410_wait_idle(void);static void s3c2410_nand_select_chip(vo

10、id);static void s3c2410_nand_deselect_chip(void);static void s3c2410_write_cmd(int cmd);static void s3c2410_write_addr(unsigned int addr);static unsigned char s3c2410_read_data(void);/ S3C2440的NAND Flash处理函数 */static void s3c2440_nand_reset(void);static void s3c2440_wait_idle(void);static void s3c24

11、40_nand_select_chip(void);static void s3c2440_nand_deselect_chip(void);static void s3c2440_write_cmd(int cmd);static void s3c2440_write_addr(unsigned int addr);static unsigned char s3c2440_read_data(void);/ S3C2410的NAND Flash操作函数 */ 复位 */static void s3c2410_nand_reset(void) s3c2410_nand_select_chip(

12、); s3c2410_write_cmd(0xff); / 复位命令 s3c2410_wait_idle(); s3c2410_nand_deselect_chip();/ 等待NAND Flash就绪 */static void s3c2410_wait_idle(void) int i;S3C2410_NAND * s3c2410nand = (S3C2410_NAND *)0x4e000000; volatile unsigned char *p = (volatile unsigned char *)&s3c2410nand-NFSTAT; while(!(*p & BUSY) for

13、(i=0; iNFCONF &= (111); for(i=0; iNFCONF |= (1NFCMD; *p = cmd;/ 发出地址 */static void s3c2410_write_addr(unsigned int addr) int i;S3C2410_NAND * s3c2410nand = (S3C2410_NAND *)0x4e000000; volatile unsigned char *p = (volatile unsigned char *)&s3c2410nand-NFADDR; *p = addr & 0xff; for(i=0; i 9) & 0xff; f

14、or(i=0; i 17) & 0xff; for(i=0; i 25) & 0xff; for(i=0; iNFDATA; return *p;/ S3C2440的NAND Flash操作函数 */ 复位 */static void s3c2440_nand_reset(void) s3c2440_nand_select_chip(); s3c2440_write_cmd(0xff); / 复位命令 s3c2440_wait_idle(); s3c2440_nand_deselect_chip();/ 等待NAND Flash就绪 */static void s3c2440_wait_idl

15、e(void) int i;S3C2440_NAND * s3c2440nand = (S3C2440_NAND *)0x4e000000; volatile unsigned char *p = (volatile unsigned char *)&s3c2440nand-NFSTAT; while(!(*p & BUSY) for(i=0; iNFCONT &= (11); for(i=0; iNFCONT |= (1NFCMD; *p = cmd;/ 发出地址 */static void s3c2440_write_addr(unsigned int addr) int i;S3C244

16、0_NAND * s3c2440nand = (S3C2440_NAND *)0x4e000000; volatile unsigned char *p = (volatile unsigned char *)&s3c2440nand-NFADDR; *p = addr & 0xff; for(i=0; i 9) & 0xff; */(不是8!)*/ for(i=0; i 17) & 0xff; for(i=0; i 25) & 0xff; for(i=0; iNFDATA; return *p;/ 在第一次使用NAND Flash前,复位一下NAND Flash */static void

17、nand_reset(void) / 判断是S3C2410还是S3C2440 */ if (GSTATUS1 = 0x32410000) | (GSTATUS1 = 0x32410002) s3c2410_nand_reset();else s3c2440_nand_reset();static void wait_idle(void) / 判断是S3C2410还是S3C2440 */ if (GSTATUS1 = 0x32410000) | (GSTATUS1 = 0x32410002) s3c2410_wait_idle();else s3c2440_wait_idle();static

18、void nand_select_chip(void) int i; / 判断是S3C2410还是S3C2440 */ if (GSTATUS1 = 0x32410000) | (GSTATUS1 = 0x32410002) s3c2410_nand_select_chip();else s3c2440_nand_select_chip(); for(i=0; iNFCONF = (115)|(112)|(111)|(TACLS8)|(TWRPH04)|(TWRPH1NFCONF = (TACLS12)|(TWRPH08)|(TWRPH1NFCONT = (14)|(11)|(10); / 复

19、位NAND Flash */nand_reset();#define NAND_SECTOR_SIZE 512#define NAND_BLOCK_MASK (NAND_SECTOR_SIZE - 1)/ 读函数 */int nand_read_ll(unsigned char *buf, unsigned long start_addr, int size) int i, j; if (start_addr & NAND_BLOCK_MASK) | (size & NAND_BLOCK_MASK) return ; / 选中芯片 */ nand_select_chip(); for(i=start_addr; i (start_addr + size);) / 发出READ0命令 */

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1