首先感谢http://blog.csdn.net/lizuobin2/article/details/52673494的博主,应该是韦东山团队的老师,说实话,拿到JZ2440的板子很长时间了,每次都有冲动去折腾它,其实初学者不是很喜欢从0开始学linux,我们迫切想知道linux是哪样,以及自己拿这块板子可以玩点什么,那么初学者第一件想干且有热情干的事情就是不用懂原理,按照扎实的步骤编译uboot、linux内核、构建文件系统、移植qt程序到我们的开发板上面!可惜啊,每次我的热情都被韦东山团队配套的使用手册pdf、论坛的指导贴给迅速磨灭,因为它们写的实在是。。。,天天打着各种广告卖教学视频,居然连初学者最迫切的需要都不知道,写的文档要么就是太相信初学者的水平,要么就是说一句留一句,而且技术支持。。。。。,初学者很看重入门这个阶段,不过说实话,韦东山的视频确实不错,耐心下来确实可以学到不少东西!机缘巧合这几天我的zynq板子(米联客的技术支持是目前线上最nb的,没有之一,强烈推荐)被我误擦错电源烧坏,送回去维修了,再加上正好韦东山出了新一期的教程加强版,最关键的是配套开发环境Ubuntu终于换成了16.04(虽然下载有各种问题),有谁喜欢对着Ubuntu 9.10的请举手!!!!!!废话不说了,开始老老实实重新优化上面博主的文章,再次感谢博主文章的指导。
1、 开发环境:ubuntu 16.04(https://eyun.baidu.com/s/3miEaDza#sharelink/path=%2F)
在全部文件>百问网分享的所有文件>005_ARM裸机1期加强版里面,下载解压有问题,这个ubuntu-16.04.2-x64-100ask-s002.vmdk破坏了,需要和团队老师索要,我不知道为什么反正之前可以进入图形界面,现在下载的开机也不能登录图形界面,需要自己网上自己想办法搞定,吓得我赶紧把虚拟机备份了下,希望韦东山团队赶紧上传个可以用的,环境很重要!
2、 编译器:
友善的 4.4.3 版本的交叉编译工具:arm-linux-gcc-4.4.3.tar.gz链接:http://pan.baidu.com/s/1nvJF8ud密码:oi57
将现在原有的交叉编译器路径替换为我们新解压的交叉编译器:
a. 设置root密码:sudo passwd
b. sudo gedit/etc/bash.bashrc
在最后加入
exportJAVA_HOME= /work/qt/FriendlyARM-gcc-4.4.3/bin (这个根据你自己将arm-linux-gcc-4.4.3.tar.gz解压到哪边,千万不要直接复制)
#exportJAVA_HOME=/work/tools/gcc-3.4.5-glibc-2.3.6/bin (//这是之前的3.4.5,可以#注释掉,留着以后方便切换)
exportPATH=$JAVA_HOME/:$PATH
c. source /etc/bash.bashrc
建议在book用户和root用户下面都用arm-linux-gcc –v命令试下,确保是4.4.3交叉编译环境!如果不放心,重启下电脑!
3.重新编译uboot 2012.04.01(测试也可以使用最新的U-Boot 1.1.6enable Ethernet alltime)
Uboot 2012.04.01打好补丁的源码:(下载以后使用务必在linux环境解压,不然就会出错,因为windows环境下xx.h 和XX.h是默认覆盖的)下载链接: https://github.com/lizuobin/uboot-2012.04.01-jz2440.git
编译步骤:
makesmdk2410_config
make
uboot成功如下:
将u-boot源码下tools目录里的mkimage工具复制到/usr/bin目录下去,这样在编译内核时“make uImage”才会成功。
4.重新编译内核(不要直接使用下载的uImage 4.3,触摸无用)
内核3.4.2源码:
https://github.com/lizuobin/linux-3.4.2-jz2440.git
编译步骤:
cp config_ok.config
make uImage
可能遇到的问题:
a.Can't use'defined(@array)' (Maybe you should just omit the defined()?) atkernel/timeconst.pl line 373.
去掉defined
b. 查看xxxx/linux-3.4.2-jz2440-master/include/linux下的input.h 里面的EV_VERSION
查看/usr/include/linux下的input.h 里面的EV_VERSION
确保两者的值是一样的!不然会出现“selected device is not a touchscreen I understand”错误,此时触摸屏触摸没有反应,这是由于内核和编译器的一个宏定义不一致导致的!