一、交叉编译环境搭建
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