The Staff of Mage

----以此作为下次重装软件的SOP

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

之前跑一块低端的ARM板子时,由于没上操作系统,所以自己写了个bootloader,通过usb更新应用程序。新的这块要跑Linux,Ethernet,USB,SD卡一应俱全,虽然改了一下能够启动Linux,但是要支持Ethernet,USB和SD卡更新要做的东西太多,于是打算移植一个bootloader来用。

 

在网上找流行的U-boot资料,不经意间翻到barebox,号称是U-boot的升级版本,稍微看了下,支持Ethernet,USB和SD,已经满足我的要求了。而且同U-boot相比,它基于kbuild编译,有一个可视化的menuconfig,类似于Linux的编译,比较方便直观,于是决定就用它了。

 

barebox的主页(www.barebox.org)提供的最新的release版本是v2010.11.0,还不支持mci即SD卡,但是已经看到有新的补丁支持mci了,于是通过git来下载最新的代码。

kubuntu 10.10好像默认已经安装git了,在/home/xxx/Downloads下输入

git clone git://git.pengutronix.de/git/barebox.git   barebox       :该命令是在当前目录复制一个barebox的镜像,命名为barebox

cd barebox

git branch barebox20101129                                                 :创建一个名叫barebox20101129的分支

git checkout barebox20101129                                              :跳到这个分支,即目录下的文件被改成barebox20101129指定版本的文件,目前的分支跟master同步,所以文件是一样的

另可以用git checkout -b barebox20101129来代替上面最后两条指令,附加几条常用git指令:

git
1 git branch,显示当前分支,激活的打*号,git branch -r 可以显示远端分支,-a显示本地和远端所有分支,-d删除分支
2
3 git branch mybranch version会在本地建立以version为基础的分支
4
5 git describe <branch-name>查看指定分支版本。
6
7 git pull git://xxx master,更新文件到master分支
8
9 git merger <branch-name>合并<branch-name>到当前checkout分支
10
11 git diff master..mybranch 显示两个分支的差别

更详细的命令参考http://www.kernel.org/pub/software/scm/git/docs/user-manual.html ,Linux的每个工具都这么能折腾,汗...

 

在/home/xxx/下新建一个Workspaces的目录,把barebox目录拷过去,其实直接改也行,反正是改的barebox20101129这个分支,不过还不太习惯...

 

要动手改了,突然发现还没有装交叉编译器,上www.codesourcery.com下载一个lite版本(也就是不要钱)的gcc,最新的是arm-2010.09-50-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2,版本是4.5.1,事后发现有点问题(会产生undefined reference to `__bswapsi2'错误),于是改装之前的一个版本arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2,版本是是4.4.1。

运行命令(如果在窗口下移动有个权限的问题,需要换成root登录或者装个nautilus啥的):

tar -jxvf arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

sudo mv arm-2010q1 /opt

 

切换到/home/xxx/Workspaces/barebox目录,修改Makefile:

ARCH            = arm
CROSS_COMPILE   = /opt/arm-2010q1/bin/arm-none-linux-gnueabi- 

 

粗粗看了一下arch/arm/boards下的目录,pcm038跟我的板子比较接近,于是

make pcm038_defconfig

make menuconfig  (这里出错:"Unable to find the ncurses libraries or the required header files." ,sudo apt-get install ncurses-devgit 搞定)

浏览一下后保存退出后

make

当当当当,barebox.bin产生了。预知后事,且听下回分解... 

 

posted on 2010-12-04 21:37  nus1998  阅读(1902)  评论(0编辑  收藏