busybox文件系统与简单驱动学习(0)-u-boot内核编译篇

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yongwenn163/article/details/80140322

一、交叉编译环境搭建

1、4412交叉编译工具安装

(1)该工具位于4412提供安装包路径:iTOP-4412精英版光盘资料\02_编译器以及烧写工具\arm交叉编译器
(2)在ubuntu下建立交叉编译路径: /usr/local/arm 下,将arm-2009q3.tar.bz2文件导入,并进行解压
(3)进入 root 权限
(4)进入 /root 路径,编辑 .bashrc文件,并导入交叉编译路径

cd /root
gedit .bashrc

添加路径

export PATH=$PATH:/usr/local/arm/arm-2009q3/bin

继续执行

source .bashrc

(5)验证交叉编译工具是否安装正确

arm-none-linux-gnueabi-gcc -v

如果出现问题

bash: ./arm-none-linux-gnueabi-gcc: No such file or directory

解决方法:

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0

在ubuntu18.04下解决:

sudo apt-get install lib32z1 lib32ncurses5  ncurses-dev

然后继续验证,验证成功后,可以写一个简单的helloworld程序来进一步进行测试。

二、u-boot内核编译

u-boot内核编译篇4412的开发手册讲解的非常详细,这边就不在详细讲述。需要注意的是一定根据自己的板子型号来选择配置环境,我的板子是POP,需要选择正确,至于自己移植u-boot和内核这个目前水平还不够(呃呃呃,尴尬,努力),先暂时使用4412提供的编译脚本。
编译成功后 u-boot生成名字为 u-boot-iTOP-4412.bin
内核名字为 zImage ,位于 */arch/arm/boot/目录下

编译过程中可能存在各种问题,当然没有问题最好,编译过程中开始可以编译内核成功,但是第二天突然内核就不能编译成功了,奇怪了,郁闷了,没办法,还是得继续编译啊,网上继续查找解决方法。

错误:

  <command-line>:0: warning: missing terminating " character
   drivers/media/video/samsung/mali_ics/common/mali_kernel_core.c: In function 'mali_kernel_constructor':
  drivers/media/video/samsung/mali_ics/common/mali_kernel_core.c:172: error: missing terminating " character
  drivers/media/video/samsung/mali_ics/common/mali_kernel_core.c:172: error: expected expression before ')' token
  make[5]: *** [drivers/media/video/samsung/mali_ics/common/mali_kernel_core.o] Error 1
  make[4]: *** [drivers/media/video/samsung/mali_ics] Error 2
  make[3]: *** [drivers/media/video/samsung] Error 2
  make[2]: *** [drivers/media/video] Error 2
  make[1]: *** [drivers/media] Error 2
  make: *** [drivers] Error 2

解决方法:将…/mali_ics下的Makefile和Makefile.common中的-qv exported 改为:-Eqv “exported|Unversioned directory”
参考:https://blog.csdn.net/jgzsygg/article/details/77365706

错误:

root@nyw:/home/nyw/iTOP4412/iTop4412_Kernel_3.0# make menuconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
 *** Unable to find the ncurses libraries or the
 *** required header files.
 *** 'make menuconfig' requires the ncurses libraries.
 *** 
 *** Install ncurses (ncurses-devel) and try again.
 *** 

解决:

apt-get install ncurses-dev

三、板子烧写

这里对烧写做简单介绍,作为笔记,详细仍然直接看文档,不在赘述。

1、Windows烧写

第一步需要进入u-boot模式然后进行分区,分区步骤第一次做了就可以了,后期不需要每次都做,接着进入fastboot模式

fdisk -c 0
fatformat mmc 0:1
ext3format mmc 0:2
ext3format mmc 0:3
ext3format mmc 0:4
fastboot

在提供的cmd烧写u-boot、内核与文件系统的烧写

fastboot.exe flash bootloader u-boot-iTOP-4412.bin
fastboot.exe flash kernel zImage
fastboot.exe flash ramdisk ramdisk-uboot.img
fastboot.exe flash system system.img
fastboot -w
fastboot reboot

2、使用Ubuntu进行烧写

参考链接:https://blog.csdn.net/stoic163/article/details/52624148
(1)安装adb和fastboot

sudo apt-get update
sudo apt-get install android-tools-adb android-tools-fastboot

(2 安装minicom
既然要使用Ubuntu烧写,那么就完全脱离Windows吧,将串口也在Ubuntu下控制

sudo apt-get install minicom

(2)配置USB设备

1)在minicom串口中重启进入uboot模式,然后输入fastboot进入fastboot模式
2)接着
lsusb
可以看到手机ID信息

Bus 003 Device 005: ID 18d1:d00d Google Inc.

3)

sudo gedit /etc/udev/rules.d/70-persistent-net.rules

添加:

//adb and fastboot protocol
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0666", OWNER="<tom>"
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0666", OWNER="<tom>"
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0666", OWNER="<tom>"
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d00d", MODE="0666", OWNER="<tom>"

其中,idVendor对应lsusb查看到的手机ID信息中的ID冒号前面的部分,idPorduct对应冒号后面的部分。
4)更新系统

cd /etc/udev/rules.d
sudo chmod a+x 70-persistent-net.rules
sudo udevadm control --reload-rules

(3)烧写指令

fastboot flash bootloader u-boot-iTOP-4412.bin
fastboot flash kernel zImage
fastboot flash ramdisk ramdisk-uboot.img
fastboot flash system system.img
fastboot -w
fastboot reboot

第一步,就暂时到这了,其实刚接触这块,也是自己摸索中学习,同时将这一过程记录下来作为自己得工作笔记,继续鼓励自己继续做下去。加油—————————————————-NYW

4412 u-boot移植

https://wenku.baidu.com/view/ae7877dc2e3f5727a5e962db.html

4412内核移植

https://blog.csdn.net/zqixiao_09/article/details/50820128

猜你喜欢

转载自blog.csdn.net/yongwenn163/article/details/80140322