Firefly开源社区

【求助】各位大神,关于linux下读写设备文件,求指点!!

94

积分

0

威望

0

贡献

技术小白

积分
94
发表于 2016-1-28 13:13:02     
本帖最后由 onecan 于 2016-1-28 13:13 编辑

各位大神:
      我现在做了这么件事情,因为我想在linux启动之后修改uboot传递的参数,所以我在parameter文件里添加0x00002000@0x00000000(uboot),然后开机,进入dev目录下查看是否产生名为uboot的设备软连接 dev.JPG
存在/dev/mmcblk0p1的设备文件,然后利用hexdump -C /dev/mmcblk0p1,查看,可以看到
hexdump.JPG
这个区域存储的是parameter的内容,现在在linux编写程序改写其中的一些内容,用read和write改写比如讲ethaddr=00:90:4c:49:16:02改写成ethaddr=00:90:4c:49:16:EF,之后hexdump -C /dev/mmcblk0p1,查看,发现确实改写了。之后


hex.JPG



,之后重新启动,发现/dev/mmcblk0p1消失,cat /proc/cmdline,发现传进内核参数没有0x00002000@0x00000000(uboot),我现在很费解为什么会这样,如果我写错误,那为什么可以正常启动,启动时的parameter是从哪里读到的?


回复

使用道具 举报

152

积分

0

威望

6

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
152
发表于 2016-3-4 15:03:07     
parameter 文件在打包时会生成 parameter.img, 里面含有开关的标识 "PARM" 和后面的四字节CRC校验,
所以如果要手工修改,还得把后面的校验更新才行。

至于改错了,系统还会读回之前的参数,那是因为 parameter.img 在 parameter 分区的不同地方写了好几份,有冗余。
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表