返回学习汇总贴我有罪,中午在城里吃了碗地沟油面...
老婆要来过周末,今天更新两节...
试用新版环境变量0.开始之前:
(1) 你需要了解基本的shell命令
(2) 掌握
Barebox for tiny 210 - step 2 (3) 搭建tftp服务器,以下命令在Ubuntu12.04.1实测通过,
/srv/tftp是tftp根目录
sudo apt-get install tftpd tftp openbsd-inetd
sudo /etc/init.d/openbsd-inetd restart
sudo mkdir /srv/tftp && chmod 777 /srv/tftp/ && sudo echo 'hello tftp !' > /srv/tftp/hello.txt
(4) 严格意义上讲,defaultenv不应该叫环境变量,她是一组shell scripts,Barebox启动后自动运行,其功能包括设置环境变量初值、自动运行用户自定义脚本等。绕绕了,直接开练...
1.编译运行
(1) 更新源码到对应版本
cd ~/s5pv210/github/loader/barebox
git checkout 03d34b89ad4762029e1d7f8dafa6a8f90ff4957e
(2) 编译并烧写到SD卡(详细步骤请参见step 1)
(3) 运行调试
从SD卡启动单板,用网线直接连接电脑与单板
将电脑IP地址设置为192.168.0.10,255.255.255.0
不需要设置单板IP,defaultenv自动设置好了192.168.0.100, 255.255.255.0
通过串口终端执行下边两条命令,检查单板是否能ping通电脑
ifup eth0
ping 192.168.1.10
显示host 192.168.1.10 is alive,表示能ping通
通过串口终端执行下边两条命令,检查tftp是否可用
cp /mnt/tftp/tftp.txt /
cat /tftp.txt
(4) 继续之前 查看defaultenv-2/和arch/arm/boards/friendlyarm-tiny210/env/两个目录下的env脚本,前者是通用脚本,后者是单板私有脚本,冲突时后者覆盖前者
首先执行的是defaultenv-2/base/bin/init 脚本,阅读common/startup.c (line 124) for reason,env执行流程非常简单,仔细分析一下吧!
分析ifup脚本功能,找出默认IP是在哪里设置的,注意名字相同时私有脚本会覆盖通用脚本
为什么测试tftp用cp命令,因为我把tftp命令用法忘记了...这里之所以可以用cp,是因为Barebox支持tftp文件系统了,详见defaultenv-2/base/init/automount脚本,我知道大致意思:首次访问/mnt/tftp文件夹时,执行ifup eth0 && mount -t tftp $eth0.serverip /mnt/tftp命令(首先配置并启用eth0,然后从服务器mount tftp根目录)
为了方便调试,开启了命令行编辑、命令行自动补齐功能,您不妨尝试一下tab键补全命令、命令行历史记录等功能
[深水]如果你关心这些脚本是如何编译进目标文件的,我能说个大概:打包并压缩,转换为数组(default_environment),阅读common/Makefile (line 75 - 108) for more
2 代码分析
不贴代码了,感兴趣的建议看
github commit记录
[ 此帖被mei5150在2013-04-13 20:44重新编辑 ]