x210v3开发板u-boot-2012.10移植之十二---启动内核

                                                               疯雨-版权所有,转载请注明【http://blog.csdn.net/u010346967】

uboot启动内核要注意两点:

第一,修改自启动命令。我的这个uboot版本是配置 CONFIG_BOOTCOMMAND (在配置文件配置 x210v3.h)

第二,修改启动参数(如果内核配置为uboot传递启动参数的话)。这个uboot版本是配置CONFIG_BOOTARGS。我不用uboot传参,就不改了。

关于内核的制作,我也有相应的文章,可以去看看。

下面修改启动命令:

128 //#define CONFIG_BOOTCOMMAND    "run ubifsboot"
129 #define CONFIG_BOOTCOMMAND  "bootm 0x20008000"

好既然是从0x20008000启动那么就要把内核代码copy到0x20008000这个内存地址吧。

去copy_to_mem里面添加拷贝函数,思路是这样的先把编译好的内核代码烧写到sd卡,然后在copy_to_mem里面添加复制代码,复制内核到内存地址0x20008000.

修改copy_to_mem,这里就不解释了 ,你应该自己能写出来,代码如下:

/**
 * * This Function copy MMC(MoviNAND/iNand) Card Data to memory.
 * * Always use EPLL source clock.
 * * This function works at 20Mhz.
 * * @param u32 DMA channel number: this is channel 2. Depend on your board.
 * * @param u32 StartBlkAddress : Source card(MoviNAND/iNand MMC)) Address.(It must block address.)
 * * @param u16 blockSize : Number of blocks to copy.
 * * @param u32* memoryPtr : Buffer to copy from.
 * * @param bool with_init : determined card initialization.
 * * @return bool(u8) - Success or failure.
 * */
#define CopySDMMCtoMem(z,a,b,c,e)  (((int(*)(int, unsigned int, unsigned short, unsigned int*, int))(*((unsigned int *)0xD0037F98)))(z,a,b,c,e))

#define MMC_CHANNEL 2
#define BL2_START_SECTOR 49
#define KERNEL_START_SECTOR 1000

#define BL2_SECTOR_NUM 480
#define KERNEL_SECTOR_NUM (512*4*8)

#define BL2_MEM_START_ADDR 0x24800000
#define KERNEL_MEM_START_ADDR 0x20008000

#define KERNEL_SIZE 0x800000

void c
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值