主题 : Barebox for tiny 210 - step 6 启动内核 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 54261
精华: 9
发帖: 43
金钱: 665 两
威望: 133 点
贡献值: 9 点
综合积分: 266 分
注册时间: 2011-08-27
最后登录: 2014-08-08
楼主  发表于: 2013-04-11 01:03

 Barebox for tiny 210 - step 6 启动内核

管理提醒: 本帖被 xoom 执行加亮操作(2013-04-11)
返回学习汇总贴
规避内核BUG,从tftp或nand加载内核,挂载nfsroot

0.开始之前:
    (1) 了解uImage格式及引导过程
    (2) 分析bootm相关代码(image.h boot.h image.c uimage.c commands/bootm.c arch/arm/lib/bootm.c )
    (3) 分析env相关代码,了解环境变量传递过程(env.c parameter.c globalvar.c bootargs.c armlinux.c env/bin/init env/bin/boot env/init/net )

    (4)掌握 Barebox for tiny 210 - step 5
1.编译Barebox
    (1) 更新源码到对应版本
        cd ~/s5pv210/github/loader/barebox && git checkout 812926e11b37deba3b1ee2a4f246b393df741901
    (2) 配置编译
        cp arch/arm/configs/friendlyarm_tiny210_defconfig .config
        make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
                禁用General Settings -> [ ]run machine low-level init
        make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- && sudo cp barebox.bin /srv/tftp/
        编译生成的barebox.bin放到tftp根目录下
2.编译内核
    (1) 解压友善内核
    (2) 修改内核,解决UART FIFO状态查询代码存在的BUG
        --- arch/arm/mach-s5pv210/include/mach/uncompress.h.old  2013-04-10 21:59:24.065238578 +0800
        +++ arch/arm/mach-s5pv210/include/mach/uncompress.h  2013-04-10 18:07:08.395060709 +0800
        @@ -18,7 +18,12 @@
         static void arch_detect_cpu(void)
         {
        -  /* we do not need to do any cpu detection here at the moment. */
        +  /*
        +   * For preventing FIFO overrun or infinite loop of UART console,
        +   * fifo_max should be the minimum fifo size of all of the UART channels
        +   */
        +  fifo_mask = S5PV210_UFSTAT_TXMASK;
        +  fifo_max = 15 << S5PV210_UFSTAT_TXSHIFT;
         }
    (3) 配置编译
        cp mini210_linux_defconfig .config
        make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
                禁用System Type ---> [ ]Force UART FIFO on during boot process  暂时规避开启UART FIFO时程序挂死的问题
        make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage && cp arch/arm/boot/uImage /srv/tftp/
        编译生成的uImage放到tftp根目录下
3.安装配置NFS服务
    (1) 解压友善根文件系统到NFS目录(/home/doudou/nfsroot/tiny210)
    (2) 安装
        sudo apt-get install nfs-kernel-server
    (3) 配置
        sudo vi /etc/exports (添加一行)
                /home/doudou/nfsroot/tiny210 192.168.0.*(rw,sync,no_root_squash)
        sudo /etc/init.d/portmap restart && sudo /etc/init.d/nfs-kernel-server restart
    (4) 测试
        sudo mount -t nfs 192.168.0.10:/home/doudou/nfsroot/tiny210 /mnt/nfs/ && sudo umount /mnt/nfs
4.网络启动    
        通过串口终端执行update命令,单板从TFTP下载barebox.bin到RAM并运行,倒数三秒后自动从服务器加载内核和根文件系统 ,成功进入图形界面            
5.NAND启动
        通过串口终端执行update命令,单板从TFTP下载barebox.bin到RAM并运行,三秒内按任意键中断autoboot,然后执行下述命令拷贝内核到NAND中
                erase /dev/nand0.kernel && cp /mnt/tftp/uImage /dev/nand0.kernel
         执行下述命令设置命令行参数
                global linux.bootargs.dyn.root="root=/dev/nfs nfsroot=192.168.0.10:/home/doudou/nfsroot/tiny210 ip=192.168.0.100:192.168.0.10:192.168.1.1:255.255.255.0::eth0"
         执行bootm /dev/nand0.kernel 命令从NAND启动内核,内核从服务器加载根文件系统,成功进入图形界面
6.继续之前
         分析/dev/nand0.kernel 分区的地址和大小
         将rootfs烧写到NAND FLASH中
         分析BOOTZ、BOOTU机制
         分析修改的内核代码
                
[ 此帖被mei5150在2013-04-13 20:45重新编辑 ]
级别: 侠客
UID: 54261
精华: 9
发帖: 43
金钱: 665 两
威望: 133 点
贡献值: 9 点
综合积分: 266 分
注册时间: 2011-08-27
最后登录: 2014-08-08
1楼  发表于: 2013-04-11 01:29
写到大半夜,自己先顶了...
级别: 风云使者
UID: 36096
精华: 3
发帖: 2513
金钱: 14075 两
威望: 2815 点
贡献值: 3 点
综合积分: 5086 分
注册时间: 2011-01-11
最后登录: 2015-11-15
2楼  发表于: 2013-04-25 21:11
路过看看了
极度缺钱,求捐赠……支付宝兼邮箱:huming2207@qq.com
级别: 新手上路
UID: 145733
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 22 分
注册时间: 2021-01-22
最后登录: 2021-01-29
3楼  发表于: 88天前
卡好短杰卡斯基多拉到家了卡死了的科技爱上了点几点击拉三等奖阿圣诞节快乐静安寺断开连接阿萨德加拉手机端克拉斯断开连接

股指可以做多做空,去哪里开户?股指期货怎么开户?可以运用最低本金1万,即可操作股指期货配资公司提供的账户操作获利。期货配资是一种提高资金使用的方式。通过融航系统操作,可实现反锁仓代替平今,降低交易手续费,把原本平今500+的手续费降低到400,威可搜  gz5185186线下模式,有融航系统和文华财经系统欢迎来聊
安徽省抵抗力静安寺