2014年刚开始学习linux时,搭建环境花了很多时间。当时最熟悉的是单片机如Mag16和stm32,依据以往学习单片机的经验肯定要用下载器下载程序,但是我找了很久没有比较好的IDE,不像Mag16有AVR Studio、stm32有Keil集成开发环境可以使用。当时查找资料说ADS可以用,但是流程很是复杂,其实后来发现eclipse也是可以使用的,但是那时只有一个jlink,而且是在虚拟机VMware里面装了一个ubuntu系统,然后在虚拟的这个系统里面安装交叉编译环境,编译uboot、内核,在windows环境下用板子里面的uboot把内核加载进nandflash,后来学习驱动需要在linux环境编译内核和驱动然后把驱动动态加载进内核。上面叙述的就是刚开始学习linux时方法,我记得遇到最多的问题就是网络问题,windows《==》虚拟机linux《==》开发板linux系统如何相互ping然后能够实现:(1)windows《==》虚拟机linux之间传输文件,一般烧写普通小程序时(不是驱动程序)都是在虚拟机里面编译好然后将bin文件通过网络从虚拟机中linux里面拷贝到windows环境然后用dnw下载进arm目标板(后来win7无法安装dnw的驱动软件)(2)编写驱动程序时动态加载时在虚拟机linux里面编译好然后通过mount挂载到编译好的文件,然后将.ko文件拷贝到arm目标板,这个过程必须要虚拟机和开发板进行ping通(3)后来开始调试内核函数越来越发现以前的开发方式实在是繁琐,而且初学者刚学linux好多命令都不是很懂,更不要说下载到哪个地址是nor启动还是nand启动。中间有个项目耽搁了半年时间,项目完了又遇到写小论文,现在又重新鼓捣linux内核和驱动,我现在直接将linux安装在电脑上,然后在linux环境下进行开发。
具体配置:
ubuntu 14.04+openjtag
直接将电脑安装linux操作系统,使用openjtag这个开源的硬件和配套的软件开发起来效率十分的高,而且不用再虚拟机和windows间不断地切换,也不用考虑电脑的配置,一般的低配台式机都能满足你调试程序要求。
arm开发板配置网络ip:
ifconfig eth0 172.19.72.89 netmask 255.255.255.0 up //配置IP地址
ifconfig eth0 up | down //激活,关闭设备eth0
route add default gw 172.19.72.1 //配置默认网关