6818开发板uboot、kernel、rootfs编译记录

本文详细记录了在Ubuntu 16.04环境下,针对6818开发板进行uboot、kernel(包括摄像头、HDMI接口和OV5645 MIPI接口驱动)以及rootfs的编译过程。在uboot编译时,需要修改以支持arm-linux-gnueabihf编译器;kernel编译涉及添加摄像头和HDMI驱动;rootfs编译则解决了相关配置问题。通过本文,读者可以了解到驱动添加及编译的具体步骤。

目录

前言

因为前面编译过一次6818的uboot、kernel和rootfs。但是是在root用户下编译的,结果在开发板上运行出现错误。文档上写必须在普通用户,所以又在普通用户下重新编译一次。但是因为没有及时记录下编译过程,结果又要重新造轮子,效率更低!

编译环境介绍

  • ubuntu : ubuntu16.04
  • uboot : u-boot-2014.07
  • kernel : kernel-3.4.39
  • toolchain : gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf

uboot编译记录

  • 问题:
soft-float & VFP hard
  • 解决方法:
    默认u-boot的编译要支持arm-linux-guneabihf-编译器编译需要修改一些选项。
    具体:参见链接
    在这个链接中,介绍要修改arch/arm/cpu/armv7/config.mk中的语句如下:
PLATFORM_RELFLAGS += -fno-common --ffixed-r8 -msoft-float

修改为

PLATFORM_RELFLAGS += -fno-common --ffixed-r8 -mfloat-abi=hard

但是,我的uboot下没有armv7这个目录,然后我在arch/arm/config.mk中发现如下语句:

PLATFORM_RELFLAGS += $(call cc-option, **-msoft-abi=float**) \
      $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))

修改为:

PLATFORM_RELFLAGS += $(call cc-option, **-msoft-abi=hard**) \
      $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))

然后,再次编译,顺利通过。

kernel编译记录

kernel添加摄像头驱动

kernel的编译没有出现问题,主要我需要kernel支持usb摄像头驱动。这里我的开发板说是支持罗技C270,然后我找到这篇 linux下通过V4L2驱动USB摄像头,详解请查看这篇博客。我需要做的就是添加上这个驱动模块</

### qemu运行uboot 可以利用qemu运行交叉编译uboot程序。运行命令示例如下: ```bash qemu-system-aarch64 \ -M virt \ -cpu cortex-a72 \ -smp 2 \ -m 2048M \ -kernel u-boot \ -nographic ``` 这里使用`qemu-system-aarch64`指定了QEMU用于模拟64位ARM架构的可执行文件,`-M virt`指定了模拟的机器类型为`virt`,`-cpu cortex-a72`指定了模拟的CPU类型,`-smp 2`表示模拟2个CPU核心,`-m 2048M`表示分配2048MB内存,`-kernel u-boot`指定了要加载的内核文件为`u-boot`,`-nographic`表示以非图形化模式运行 [^1][^2]。 ### qemu使用uboot加载kernel 使用qemu结合uboot加载kernel时,以vexpress-a9开发板为例,最终的qemu加载运行脚本如下: ```bash #!/bin/sh # 测试u-boot # 上级路径 top_path="/home/thinks2/ProgramProject/qemu_study/" src_path="tftpboot/u-boot" # 内核文件路径 kernel_path=${top_path}${src_path} qemu-system-arm \ -M vexpress-a9 \ -m 512M \ -kernel ${kernel_path} \ -nic tap,ifname=tap0 \ -append "root=/dev/mmcblk0 rw console=ttyAMA0" \ -sd rootfs.ext3 \ -nographic ``` 该脚本中,`-M vexpress-a9`指定模拟的开发板为`vexpress-a9`,`-m 512M`分配512MB内存,`-kernel ${kernel_path}`指定要加载的内核文件路径,`-nic tap,ifname=tap0`配置网络接口,`-append`参数传递内核启动参数,`-sd rootfs.ext3`指定根文件系统,`-nographic`以非图形化模式运行 [^5]。 ### qemu + gdb调试ubootkernel 有关于使用qemu + gdb调试ubootkernel的内容,但文档中未详细给出调试命令 [^3]。 ### qemu模拟开发板选择 由于qemu模拟vexpress资料最多,所以常使用vexpress-ca9开发板进行模拟,为了方便研究ubootkernel,可使用版本为uboot-2013.10和linux-2.6.39的相关程序 [^4]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值