u-boot-2012.04.01移植笔记——支持NAND启动
来源:互联网 发布:手游英雄杀十连抽数据 编辑:程序博客网 时间:2024/06/07 01:00
1、加入nand读写函数文件:
对于nand的读写我们需要特定的函数,之前写最小bootloader的时候曾写过nand.c文件,我们需要用到它。为了避免混淆,我们先将其改名为init.c,然后拷贝到:board\samsung\smdk2440目录下。并在本目录的Makefile文件中将COBJS := smdk2410.o修改为:COBJS := smdk2410.o init.o。另外我们将init.c文件里面里的nand_init全部改为nand_init_ll,nand_read全部改为nand_read_ll。
2、拷贝代码:
将arch/arm/cpu/arm920t/start.S里的下列代码
/* Set stackpointer in internal RAM to call board_init_f */
call_board_init_f:
ldr sp, =(CONFIG_SYS_INIT_SP_ADDR)
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
ldr r0,=0x00000000
bl board_init_f
修改为:
ldr sp, =(CONFIG_SYS_INIT_SP_ADDR)
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
bl nand_init_ll
mov r0 , #0
ldr r1 , _TEXT_BASE
ldr r2 , _bss_start_ofs
bl copy_to_sdram
bl clear_bss
ldr pc , =call_board_init_f
/* Set stackpointer in internal RAM to call board_init_f */
call_board_init_f:
ldr r0,=0x00000000
bl board_init_f
并且在include/configs/smdk2440.h文件里面将:
#define CONFIG_SYS_TEXT_BASE 0x0
修改为:#define CONFIG_SYS_TEXT_BASE 0x33f00000
3、清BSS段
修改Init.c文件里面的clear_bss函数为:
void clear_bss()
{
extern int __bss_start,__bss_end__;
int *p = &__bss_start;
for(;p<&__bss_end__;p++)
*p=0;
}
4、去除重定位代码
将arch/arm/lib/board.c文件里的board_init_f函数最后的relocate_code(addr_sp, id, addr);注释掉
并 start.S文件里面的clear_bss和relocate_code代码去掉
在board_init_f函数里面将:
addr -= gd->mon_len;
addr &= ~(4096 - 1);
修改为:
addr = _TEXT_BASE;
5、第二阶段代码:
首先在arch/arm/lib/board.c文件里的board_init_f数最后的添加:return (unsigned int)id;
并将函数名改为:unsigned int board_init_f(ulong bootflag)
将include/common.h文件的:
voidboard_init_f (ulong) __attribute__ ((noreturn));
voidboard_init_r (gd_t *, ulong) __attribute__ ((noreturn));
修改为:
unsigned int board_init_f (ulong) ;
voidboard_init_r (gd_t *, ulong) ;
在arch/arm/cpu/arm920t/start.S文件里的:
blboard_init_f
后面添加:
ldr r1 , = _TEXT_BASE
bl board_init_r
6、去掉-pie选项
vi arch/arm/config.mk
注释掉://LDFLAGS_u-boot += -pie
7、修改连接脚本
vi arch/arm/cpu/u-boot.lds
将:
.text :
{
__image_copy_start = .;
CPUDIR/start.o (.text)
*(.text)
}
修改为:
.text :
{
__image_copy_start = .;
CPUDIR/start.o (.text)
board/samsung/smdk2440/libsmdk2440.o (.text)
*(.text)
}
文章参照:http://liu1227787871.blog.163.com/blog/static/205363197201271103621960/
文章参照:http://liu1227787871.blog.163.com/blog/static/205363197201271103621960/
0 0
- u-boot-2012.04.01移植笔记——支持NAND启动
- 【Linux 移植 】——4、移植 u-boot-2012.04.01 之 支持NAND启动
- 移植u-boot-2012.04----支持nand启动
- TQ2440 u-boot-2012.04.01移植二支持NAND启动
- u-boot-2012.04.01移植到TQ2440(六):支持NAND FLASH启动
- 移植u-boot-2012.04.01到jz2440开发板之修改代码支持NAND启动
- TQ2440 u-boot-2012.04.01移植四支持NAND Flash
- U-Boot移植——Nand Flash启动
- u-boot移植(七)支持nand启动
- TQ2440 u-boot-2012.10移植二支持NAND启动
- TQ2440 u-boot-2012.10移植二支持NAND启动
- U-boot-2010.09移植(六)NAND Flash启动支持
- 移植u-boot学习笔记5----- 修改代码之支持NAND启动
- u-boot移植之支持 NAND FLASH 学习笔记
- u-boot-2011.03在mini2440/micro2440上的移植(七)——支持Nand Flash启动
- [s3c2416x移植u-boot-2015.10] 让u-boot-2015.10支持spl nand的启动
- U-Boot移植——Nand Flash
- 移植u-boot-2012.04----支持NORFlash启动
- Python面试题集答案(3)
- java学习笔记2015-6-6
- greenplum中对单个节点备份并进行串行恢复
- 2015-06-12 五-翻转二叉树
- 【译】Python中如何创建mock?
- u-boot-2012.04.01移植笔记——支持NAND启动
- Storyboard Reference
- #leetcode 021 Merge Two Sorted Lists(Python)
- Mini2440加载模块时遇到错误几个问题
- 文顶顶 iOS开发UI篇—手写控件,frame,center和bounds属性 iOS开发UI基础—手写控件,frame,center和bounds属性
- C、C++一次将整个文件读入内存
- 更改源泉书签的重要性显示
- MySQL 数据库备份 和字段更改
- ubuntu14.04 iBUS拼音输入法无法使用全拼