摘要:
Socket CAN 对CAN protocol做了封装,对CAN设备的读写变成了类似tcp/ip的读写网络(socket操作)。目标环境:linux2.6.37, i.mx27开发板带mcp2515首先注册spi device和mcp2515 device:代码make menuconfig中加入:代码编译安装mod:insmod can.koinsmod can-raw.koinsmod can-bcm.koinsmod can-dev.koinsmod mcp251x.ko最新版busybox的ip还是不支持socketcan,所以要自己编译一个。上http://corp-dev.lin 阅读全文
摘要:
大大小小事情一堆,好久不更新了,这次记录下移植ubifs文件系统步骤。虽然通常是先kernel后rootfs,但是kernel要不停改,rootfs却必须得先存在,所以先搞定rootfs,rootfs采用据说是nand flash上最先进的ubifs。上http://www.busybox.net/下载busybox源代码,目前最新的稳定版本为1.18.1,解压至Workspaces。以下切换到root用户进行操作(在其他用户模式下编译出来的rootfs登录时不是以root登录,好像是比较麻烦,简单起见先)修改Makefile:CROSS_COMPILE = /opt/arm-2010q1/b 阅读全文
摘要:
Barebox支持MCI接口即SD卡设备,但是并没有移植fat文件系统,因此SD卡中的内容无法识别。由于bootloader阶段对SD卡的需求基本上也就在更新loader,kernel或者rootfs上,因此这次的目标只是增加一个sdupd命令+3个Option(loader,kernel,rootfs),能够自动读取SD卡根目录下的文件到对应地址。首先分析下barebox的MCI接口,通过imx.c-mci-core.c-disk_driver.c,分别对应创建了imx-mmc0设备到mci0设备到disk0设备,最终在disk0上创建了一个命名为disk0.0的分区,disk0.0就是 阅读全文
摘要:
Barebox提供了很多有用的命令,主要的命令如下:help命令,显示所以barebox命令,另可以用help+命令名的方式查看命令的用法,如"help ls"。以下命令用help+命令名能看到的部分不再描述。addpart命令,对某设备加入分区表,具体的例子如init里的addpart /dev/nand0 "256k(barebox)ro,128k(bareboxenv),2M(kernel),-(root)",把/dev/nand0分成/dev/nand0.barebox,/dev/nand0.bareboxenv,/dev/nand0.kernel,/dev/nand0.root,分区 阅读全文
摘要:
Barebox个人定制化的东西主要位于arch/arm/boards下,这次的目标是创建一个基于i.MX27的loader,板名命名为my27。首先复制arch/arm/boards/pcm038到arch/arm/boards/my27,修改里面的文件名为my27.c和my27.dox ,修改里面的makefile。在barebox目录下输入make menuconfig,导入pcm038_defconfig,另存为my27_defconfig。修改arch/arm/Makefile, 加上board-$(CONFIG_MACH_MY27) := my27上http://www.arm.li 阅读全文
摘要:
shell以 #!/bin/sh开头,除此外#表示一行注释的开始。变量: 变量无需事先声明。 $var表示引用变量var的值,如无定义则无值 $(var)同上,用于同$varx等区分 $(var:-thing),var存在且非null,取var的值,不然取thing的值,var的值不受影响 $(var:+thing),var存在且非null,取thing的值,不然无值$(var:=thing),var存在且非null,取var的值,var的值不变,不然取thing的值,var的值改成thing $(var:?message),var存在且非null,取var的值,不然打印message并退出, 阅读全文
摘要:
上篇讲到start_barebox在执行死循环的shell之前会调用environment,这次来分析一下这些env。代码首先程序去读取/dev/env0到/env,正常情况下/dev/env0放的是一个(类似)压缩文件,envfs_load会对它做校验。毫无疑问,初始启动时肯定是找不到这个文件的,所以接着读取/dev/defaultenv到/env (loader跑起来后执行saveenv就把/env的东西打包到/dev/env0去了)。然后执行/env/bin/init。接下去我们分析一下/env/bin/init即/dev/defaultenv/bin/init。打开barebox下的d 阅读全文
摘要:
上篇讲到了barebox的安装,并针对pcm038做了编译,这次以pcm038为例大致分析下barebox的结构。barebox的启动文件是startup.c,通常arm的启动代码都用汇编语言写成,不过用c语言也没什么差--批一层羊皮而已,没错,就是在c语言里调用汇编语句,来看一下入口函数:代码这个函数内容没啥可说的,就是arm异常表的一个映射,注意__section(.text_entry) 这个前缀,它指定该函数会被link到.text_entry区域,在arch/arm下的Makefile里可以看到:lds-$(CONFIG_GENERIC_LINKER_SCRIPT):= arch/a 阅读全文
摘要:
之前跑一块低端的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的编译,比较方便直观,于是决定就 阅读全文
摘要:
具体要参考Filesystem Hierarchy Standard(http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard和里面的note),大致如下:bin ----针对所有用户的基本命令,无须挂载任何用户和文件系统即可用,不能有子目录,如ls,cat,cpboot ----bootloader使用的静态文件,通常是一个独立分区cd... 阅读全文