嵌入式开发-烧录uboot和kernel

来源:互联网 发布:java正则表达式符号 编辑:程序博客网 时间:2024/05/22 16:56
/*
嵌入式开发实验笔记
2017年5月31日
*/
简要:

主要涉及了,在Ubuntu为PC的主系统时的一些烧写U-boot, 和kernel的注意事项

本文的实验平台是jz2440


主要内容:
烧写U-boot:
1. 由于老版的U-boot对最新版的arm-linux-gcc支持不好所以,编译时,应该使用旧版的arm-linux-gcc支持不好所以,编译时,应该使用旧版的arm-linux-gcc。
2.
编译的操作过程:
1>将U-boot压缩文件和对应的补丁文件复制到自己的工作目录下
2>解压U-boot,命令:tar -xjf filename
3>进入解压后的U-boot目录,并打补丁。命令:cd filename; patch -p1 < ../filenameofpatch
4>根据自己开发板的芯片不同的,调用相关配置文件进行配置。命令:(以s3c2440为例) make 100ask24x0_config
5>开始编译。命令:make
6>烧写时,可以参考裸机烧写方式:sudo oflash 0 1 0 0 0 u-boot.bin
烧写kernel:
1.注意:kernel的编译过程有三点,其一:make menuconfig 时终端尽量全屏
其二:目测好像编译只能在32位Ubuntu上才能操作成功
其三:一定要安装 ncurses程序库,不然最后make menuconfig 会出现错误
2.配置方式有三: 
1> 直接make menuconfig,然后自己一项一项进行配置
2> 在kernel的默认配置里找到与自己芯片最接近或者自己的芯片的默认配置
默认配置在 ./arch/arm/config 目录之下
命令:make s3c2410_defconfig (以三星s3c2440为例)
然后 make menuconfig
3> 使用厂家提供的配置文件,并将厂家的配置文件更名为 .config(ps:文件一定放置在kernel的根目录下)
然后 make menuconfig
3.编译时的注意事项:
由于kernel的版本过低,与现版本的make不兼容,所以会出现如下错误:
Makefile:416: *** mixed implicit and normal rules: deprecated syntax
Makefile:1449: *** mixed implicit and normal rules: deprecated syntax
make: *** No rule to make target 'menuconfig'.  Stop.
解决方法:打开Makefile, 修改对应行:
416:config %config: scripts_basic outputmakefile FORCE
$(Q)mkdir -p include/linux include/config
$(Q)$(MAKE) $(build)=scripts/kconfig $@
修改为:
%config: scripts_basic outputmakefile FORCE
$(Q)mkdir -p include/linux include/config
$(Q)$(MAKE) $(build)=scripts/kconfig $@
1449:/ %/: prepare scripts FORCE
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(build-dir)
修改为:
%/: prepare scripts FORCE
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(build-dir)
4.最后编译:make uImage (生成的uImage在 arch/arm/boot/uImage)
5.烧录操作:烧录方式,是在有U-boot的情况下通过tftp烧录
1>对于tftp的相关配置,参考:http://www.linuxidc.com/Linux/2016-07/133255.htm
2>对于板子和PC机的连接:
首先连三条线:USB, COM, 网线,
其次,设置电脑以太网静态ip, 网关, 掩码(参考相关教程)
最后,通过板子 ping 电脑的静态ip 检验是否链接。(前提时修改U-boot环境变量中的serverip为电脑静态ip)
3>将uImage复制到tftpboot目录下
在板子U-boot中执行:tftp 30000000 uImage (下载 kernel)
nand erase kernel (擦除分区)
nand write.jffs2 30000000 kernel (烧写kernel)
完成!!

阅读全文
0 0
原创粉丝点击