6556|9

774

帖子

2

TA的资源

纯净的硅(中级)

楼主
 

给BBB换内核---不用刷机 [复制链接]

放假回家打算重新复习一下linux下的驱动开发,开发驱动就得先编译一下内核源码。
于是为了偷懒上网找了个别人写好脚本打好补丁的BBB内核源码http://the8thlayerof.net/2013/10/16/beagle-bone-black-notes-how-to-build-a-kernel-for-a-beagle-bone-black-from-scratch-part-1/ ,将内核编译好,自己写了一个hello world的驱动程序,弄到了BBB上insmod,于是出现了今天的主角---Invaild module format


这种情况的原因一般是编译驱动时用的内核和开发板上的内核版本不一样。参见http://blog.csdn.net/zhenxisuiyuan/article/details/5570490
但是人家说要重新编译内核,我哪甘心重新编译?明明已经编译好了一个,编译好的直接代替不就行了。。。
于是拿出当年折腾gentoo的精神。。。。
BBB的启动内核是/boot/uimage,而编译生成的内核文件是3.8.13-beaglebone-zImage.uImage是
uboot的专用内核格式,只需要将zImage转换为uImage即可-是用mkimage命令,这个可以在uboot/tool下找到
转换命令mkimage -A arm -O linux -T kernel -C none -a 0x80007fc0 -e 0x80008000 -n Angstrom/3.8.13/beaglebone -d 3.8.13-bone33.1.zImage uImage-3.8.13
然后将uImage-3.8.13放到/boot/下,将/boot目录下的相关文件修改即可。编译内核的时候还会在deploy目录下生成几个压缩文件,将其解压到相应的目录即可

mkimage 的参数可以参考未修改之前的uboot的启动时打印的信息
## Booting kernel from Legacy Image at 80007fc0 ...                             
   Image Name:   Angstrom/3.8.13/beaglebone                                    
   Image Type:   ARM Linux Kernel Image (uncompressed)                          
   Data Size:    3361616 Bytes = 3.2 MiB                                       
   Load Address: 80007fc0                                                      
   Entry Point:  80008000                                                      
   Verifying Checksum ... OK                                                   
## Flattened Device Tree blob at 80f80000                                       
   Booting using the fdt blob at 0x80f80000                                    
   XIP Kernel Image ... OK                                                      
OK                                                                              
   Using Device Tree in place at 80f80000, end 80f89133                        

Starting kernel ...   

之后将模块insmod后dmesg | tail,一切正常。。。。

最新回复

LZ可不可以写的在明白点,本人小白初学Linux驱动,insmod也是出现版本不对的情况,也想换内核,  详情 回复 发表于 2015-12-21 16:57
点赞 关注(1)
 

回复
举报

24

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
楼主 有一个问题  我的beaglebone  black板子上的内核版本是3.8.13   就直接使用tftp上启动   uboot部分还是3.8.13内核专用的   想把内核版本改成3.2.0  有办法吗

点评

编译内核后下载不就行了?  详情 回复 发表于 2014-1-11 13:06
 
 

回复

774

帖子

2

TA的资源

纯净的硅(中级)

板凳
 
wk123 发表于 2014-1-10 10:41
楼主 有一个问题  我的beaglebone  black板子上的内核版本是3.8.13   就直接使用tftp上启动   uboot部分还 ...

编译内核后下载不就行了?
 
 
 

回复

126

帖子

0

TA的资源

一粒金砂(中级)

4
 
表示我直接将uImage替换之后,失败了,无法启动了
 
 
 

回复

5979

帖子

8

TA的资源

版主

5
 
呵呵 不会吧 提示什么信息

点评

就直接停在u-boot了  详情 回复 发表于 2014-2-7 18:24
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

126

帖子

0

TA的资源

一粒金砂(中级)

6
 
本帖最后由 651927693 于 2014-2-7 18:28 编辑
chenzhufly 发表于 2014-2-7 17:53
呵呵 不会吧 提示什么信息


就直接停在u-boot了
Hit any key to stop autoboot:  0                                                
gpio: pin 53 (gpio 53) value is 1                                               
Card did not respond to voltage select!                                         
mmc0(part 0) is current device                                                  
mmc_send_cmd : timeout: No status update                                       
Card did not respond to voltage select!                                         
No micro SD card found, setting mmcdev to 1                                    
mmc_send_cmd : timeout: No status update                                       
mmc1(part 0) is current device                                                  
gpio: pin 54 (gpio 54) value is 1                                               
SD/MMC found on device 1                                                        
reading uEnv.txt                                                               
26 bytes read in 3 ms (7.8 KiB/s)                                               
Loaded environment from uEnv.txt                                                
Importing environment from mmc ...                                             
gpio: pin 55 (gpio 55) value is 1                                               
U-Boot#
四个User Led也只亮了前三个。

点评

你这个根本没有下载进去的。。。。而且替换之后把编译出来的dtb(好像是这个)文件,还有fireware文件夹也得替换掉.... 就记得这么多了,这段时间没时间折腾了,温饱问题还没解决  详情 回复 发表于 2014-2-12 22:35
 
 
 

回复

1173

帖子

3

TA的资源

五彩晶圆(初级)

7
 
观摩学习中
 
 
 

回复

774

帖子

2

TA的资源

纯净的硅(中级)

8
 
651927693 发表于 2014-2-7 18:24
就直接停在u-boot了
Hit any key to stop autoboot:  0                                             ...

你这个根本没有下载进去的。。。。而且替换之后把编译出来的dtb(好像是这个)文件,还有fireware文件夹也得替换掉....

就记得这么多了,这段时间没时间折腾了,温饱问题还没解决
 
 
 

回复

126

帖子

0

TA的资源

一粒金砂(中级)

9
 
就是要替换uImage, 设备树文件?fireware文件是什么?我回去看看
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 
LZ可不可以写的在明白点,本人小白初学Linux驱动,insmod也是出现版本不对的情况,也想换内核,
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表