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

 Barebox for tiny 210 - step 1 编译与运行

管理提醒: 本帖被 xoom 执行加亮操作(2013-01-09)
返回学习汇总贴
没错,冲着免费四核新平台,语言不及格的我开始写连载了...
step 1 编译原始分支,引导成功
0.开发平台介绍: Virtualbox 4.2.4 + Ubuntu-12.04.1-desktop-i386
1.安装编译工具:
    (1)解压友善提供的编译工具到根目录
        cd ~ && mkdir tmp
        cp /mnt/winFolder/tiny210/Android/arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz tmp/
        sudo tar zxf tmp/arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C /
    (2)添加编译工具所在目录到PATH
        vi ~/.bashrc
        在文件末尾增加以下四行,添加完成后执行source ~/.bashrc
        # set PATH here
        PATH=/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH
        # export PATH
        export PATH
    (3)安装其他工具
        sudo apt-get install vim git build-essential libncurses-dev minicom
2.下载源码
    (1)创建工作目录
        mkdir -p s5pv210/github/loader
        cd s5pv210/github/loader/
    (2)克隆github上的代码库
        git clone https://github.com/jiandeng/barebox.git
        cd barebox/
    (3)回退到原始分支        
        git checkout 172bc39a25480647cb392e446f80fa4f8eec7712
        一口吃不成大胖子,我们还是从头学吧,这个版本跟barebox官方源码没有区别,只是我添了step-by-step-note这个说明性文件
        执行完后会提示:HEAD is now at 172bc39... add step-by-step notes
        有人会问了:172bc39a25480647cb392e446f80fa4f8eec7712是个啥玩意儿? 她是github对源码版本的标识,理解为版本号吧,执行git log会显示类似以下信息:
            commit 172bc39a25480647cb392e446f80fa4f8eec7712                     #代码版本
            Author: jiandeng <jiandeng.develop@gmail.com>                                  #修改作者
            Date:   Tue Dec 18 20:50:43 2012 +0800                                                  #修改时间
            add step-by-step notes                                                                                  #修改备注
3.编译
        cp arch/arm/configs/friendlyarm_tiny210_defconfig .config
        make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
        make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
        编译生成barebox.s5p和barebox.bin等目标文件,bin是可直接运行的文件,适合下载到SDRAM运行,s5p是封装过的bin(见scripts/s5p_chsum.c),适合烧写到SD卡并运行。
4.烧写到SD卡——搞不清楚情形的状况下千万别轻举妄动!硬盘数据是哭不回来的!!
        
本部分内容设定了隐藏,需要回复后才能看到

5.配置串口助手(baidu一下minicom使用吧,不好讲清楚)
        sudo minicom -s
        选择你使用的串口,配置为115200, 8位数据位,1位停止位,无校验位,无流控,如下图。
            +-----------------------------------------------------------------------+
            | A -    Serial Device      : /dev/ttyUSB0                              |
            | B - Lockfile Location     : /var/lock                                 |
            | C -   Callin Program      :                                           |
            | D -  Callout Program      :                                           |
            | E -    Bps/Par/Bits       : 115200 8N1                                |
            | F - Hardware Flow Control : No                                        |
            | G - Software Flow Control : No                                        |
            |                                                                       |
            |    Change which setting?                                              |
            +-----------------------------------------------------------------------+
        选择Save setup as dfl 保存为默认配置
        选择exit from minicom退出
6.运行
    (1)打开串口助手
        sudo minicom
    (2)从SD卡启动单板
        SD卡插入单板,拨动开关选择从SD卡启动,单板串口连接电脑,开机,查看minicom
                barebox 2012.12.0-00125-g172bc39 #1 Tue Jan 8 20:11:10 CST 2013                                      
                Board: Tiny 210                                                                                      
                malloc space: 0x23a00000 -> 0x23dfffff (size  4 MB)                                                  
                stack space:  0x239f8000 -> 0x23a00000 (size 32 kB)                                                  
                refclk:    24000 kHz                                                                                
                apll:    1000000 kHz
                mpll:     667000 kHz
                hclk:     133400 kHz
                pclk:      66700 kHz
                Open /dev/env0 No such file or directory
                no valid environment found on /dev/env0. Using default environment
                running /env/bin/init...
                not found
                barebox:    
        (3)各种折腾(?命令输出所有支持的命令)
                barebox:/ ?
                      . - alias for source
                      ? - alias for help
                      [ - alias for test
                  bootm - boot an application image
                  bootu - start a raw linux image
                    cat - concatenate file(s)
                     cd - change working directory
                  clear - clear screen
                     cp - copy files
                cpuinfo - Show info about CPU
        (4)退出串口助手
        退出minicom算个技术活,按住CTRL不放,按A,再按Z,放开CTRL,按q,选yes,按回车...
        或者用window下的串口助手算了...

7.如果你感兴趣
    (1) 熟悉Barebox的源码目录
    (2) 理清Barebox的启动过程
    arch/arm/cpu/start.c 中
            void __naked __section(.text_entry) start(void) // 这个函数被链接到TEXT_BASE起始地址,她的第一条语句内联调用了barebox_arm_head函数
                arch/arm/include/asm/barebox-arm-head.h 中
                    static inline void barebox_arm_head(void)
                        "b reset\n" // TEXT_BASE起始地址存放的实际上是这条命令,所以第一条命令是跳转到reset函数开始执行
                        "1: b 1b\n"
                        "1: b 1b\n"
                        "1: b 1b\n"
                        "1: b 1b\n"
        reset函数定义在
                        arch/arm/boards/friendlyarm-tiny210/lowlevel.c 中
        依次执行:PLL初始化、SDRAM初始化、拷贝到SDRAM、在SDRAM中继续运行board_init_lowlevel_return();
        
[ 此帖被mei5150在2013-04-13 20:43重新编辑 ]