IMX283学习笔记-10月更新
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IMX283学习笔记-10⽉更新
我的EasyARM-i.MX283学习笔记
1、前记 .......................................................................................................................... - 1 -
初学第⼀阶段计划 (1)
2、关于IMX283A开发板 ............................................................................................... - 3 -
3、EASYARM-I.MX283学习-----5个⽉我学了什么? ....................................................... - 5 -
关于接下来该学习什么,怎么学习做⼀个规划: (6)
4、EASYARM-I.MX283学习之点亮LED灯....................................................................... - 6 -
1、按照教程安装好ECLIPSE:参照10.4节的做法 (6)
2、操作步骤 (6)
1、前记
对于ARM9没有什么基础,硬要说对ARM了解的话,我会STM32,也算对ARM半个⼊门了。
去年看到ZLG的IMX283开发套件时,那时很想买,但终究没买。
究其原因,当时正在学习STM32。
其实我作为硬件⼯程师(⾃诩),学习过很多单⽚机,例如51、MSP430、STM32,当然还有专业课上的FPGA当然,已有⼀年多没接触了。
这些芯⽚,可要说会也不是特别精通,可要说不会但毕竟也学过⼀段时间。
这⼀路过来,反正也是懵懵懂懂,图个新鲜感。
很多东西学过后就忘记了,现在呢就养成了写⼀些⾃学笔记的习惯。
然⽽⼤多说⾃学笔记都是以初学者的眼光和思维去看待和解决问题。
以前学完51后学习430的时候,对430的系统时钟更是⼀头雾⽔。
因为430有主时钟、⼦时钟以及辅助时钟这三种时钟信号,⽽产⽣时钟信号的时钟源⼜有⼏种,如外部8M⾼速晶振,32K低速晶振或者单⽚机内部的DCO振荡器。
因为学习51的时候,没有配置时钟系统这⼀概念,因为就⼀个12M的外部时钟。
那时候学习430断断续续的也不是很懂,再后来学STM32,32位的单⽚机系统时钟就更复杂了,各种时钟源,主系统时钟往往是通过外部8M晶振进⾏9倍频,产⽣72M的系统时钟,⼜有各种分频器到各种外设。
但当把STM32的这些学过⼀遍后,前段时间我⼜开始重新学习430,遂发现430的系统时钟亦不过如此。
当然上⾯的这段话也是我突发感想⽽已。
记得群⾥有同学说他学Linux的时候也是云⾥雾⾥,但是突然就有⼀天就豁然开朗了。
我想就跟我前段时间学习430⼀样的感觉。
貌似写了⼀段过往感想和总结,跟本⽂IMX283不搭边。
但对于283这块开发板,我要学习到什么程度我也不知道,没有前辈告诉该先学什么再学什么,也没有⼀个学习的计划。
既然没学习计划,我就做个学习计划。
初学第⼀阶段计划
1、学会安装操作系统
2、学会串⼝调试
3、点亮LED灯
4、⽤⼀下它的4位数码管
5、使⽤⼀下32位定时器
没有了,初学阶段就是这些了。
这是以硬件的眼光需要学习的内容。
Linux 操作系统,也就只能在上述计划中慢慢接触了解了。
前记就先写到这吧,以后再补吧。
2015年5⽉10⽇
2、关于IMX283A开发板
五⼀后淘宝店买的,包装挺精致的。
拆开后有⼀块主板、⼀块功能板、还有⼀块触摸屏以及⼀些零散的东西。
其实拿到后并没有我想象的那么⼤,这开发板做得真⼩巧。
照⽚拍得显⼤了,其实没这么⼤。
⼿机像素就这样。
除少部分滤波电容电感外,整板⼏乎是0402贴⽚封装。
元器件旁边的⽩⾊丝印有少许看不清,但是接插件这块看的还可以很清楚,不过SMT机贴倒也没关系。
官⽹上的照⽚都是正⾯的,没有背⾯的,开始我以为主板上只有⼀颗IMX283的芯⽚和⼀颗DD2,没有Nandflash ,那不是只能从SD卡启动了。
拿到板后才发现NAND在背⾯板。
背⾯我揭下⽩⾊标签纸后发现,还有⼀个BGA的封装,没有焊接。
在BGA 的上⽅还有⼀块芯⽚也没焊接。
能看见⼀个板状天线,有可能是⼀个⽆线模块,但极有可
能是⼀个WIFI模块。
我认为ZLG这块主板不只是给我们学习这么简单,估计还有别的⽤途。
另外,下载的资料连个原理图都没有,好多芯⽚也不知道叫什么名称,学习起来挺被动的。
我估计这块主板PCB应该是4层板,如果是6层的话成本要⾼许多了。
功能板为双层板,我挺喜欢的。
既然说到PCB了,主板的机壳地和信号地是通过⼀个电容和1M电阻并联接在⼀起(见上图标注),但是功能板PCB机壳地(螺丝孔)却是信号地直接连在⼀起了。
估计设计的时候,可能认为主板的机壳与功能板的机壳是不会连在⼀起吧,但实际是有可能好吗!敷铜地⾯和顶⾯都有,通过许多过孔相连,增加系统的稳定性。
但我最要吐槽的就是⽹⼝了,这是⼀个塑料接⼝,怎么也该弄个⾦属屏蔽壳啊!
好吧,先写到这⼉吧,这是拿到后的直观感受。
2015年5⽉16⽇
3、EasyARM-i.MX283学习-----5个⽉我学了什么?
五⼀买的开发板,现在已是⼗⼀国庆了。
学习也是断断续续的,有时⼀个星期不去管它,有时兴起弄到深夜。
我⼯作中⽤不到ARM9,⼀般的单⽚机就可以完成相关项⽬,平时上班都是调试维修仪器,学习基本都是在周末,或者晚上。
看到前⾯的⽇记,我想我⼤概已经⼀只脚迈进ARM9的⼤门了。
⼀些基本的内容应该算是完成了,除了定时器那⼀节。
作为初学者,且谈谈⾃⼰是怎么把那半只腿迈进来的。
参考ZLG的两份资料《嵌⼊式Linux开发教程(上册)》和《EasyARM-iMX28xx Linux开发指南20150527
V1.02》。
我总觉着这两份是互补,但后来前⼀份资料ZLG给取消了。
我上传⼀份,⾥⾯有三个,有⼀份是他们后来更新的。
三份穿插阅读,有所同,亦有所不同。
百度盘:/doc/92f9a419d4d8d15abf234e91.html /s/1c0sJ67I
其学习顺序⼤致如下:
1、关于Linux的简单命令
我其实也只会⼀些简单的⽐如,ls、cd、rm等⼏个常⽤的,以及vi编辑器,还有权限操作chmod 777 ,和如何让开发板和电脑⽹络连接,也就要是ping得通。
其他的也就需要什么就查什么,也没特别注意。
2、设置nfs共享⽬录
nfs 操作在我看来⾮常必要,因为写好程序不必要拷贝到开发板中,直接
在Ubuntu虚拟机进⾏nfs⽹络⽂件共享就好了。
当然初学时也会遇到很
多问题,但这并不是关键,总会解决的。
3、交叉gcc编译器和整个Linux开发环境的搭建
这部分很关键,好在教程很多。
我是参照《嵌⼊式Linux开发教程(上册)》搭建好的。
4、学会Eclipse写程序
其实我也是学习过makefile⽂件该如何编写的,但后来就没弄了。
因为我开始使⽤集成开发环境了,也就是eclipse这个平台了。
不像⼀开始
什么都⽤Vi编辑器写。
eclipse下也不⽤写makefile⽂件,点个编译按钮
即可完成编译了。
写好程序后,点击编译按钮,编译⽆误后。
将⽣成的⽂件复制到共享⽬录下,⽹络通信正常后,在开发板上执⾏就可以了。
以上就是我觉得写⼀个LED程序在开发板上运⾏,最快的做法。
按照《嵌⼊式Linux开发教程(上册)》的内容,我照着做到了它上⾯⼀个⼀个做,⾃⼰也略作思考。
做到了它给的综合实验---环境温度的检测和报警系统。
注意,这个综合实验在《。
开发指南。
》上是没有的。
这个实验我觉得挺综合,也挺适合初学者的⼊门总结。
该实验涉及有⽂件设备读写操作、ADC、数码管、按键、IO⼝、SPI、I2C等操作;其中还有⼀项我⾃今没学会的多线程操作。
Eclipse下linux如何编程也有体现,⽐如C语⾔模块化编程,项⽬如何管理等等;
之后我会写⼀个集成开发环境下的LED该如何编程。
差不多这些知识总结快写了2个⼩时,我平时时间还是很多的,就是不想动。
想起了那句名⾔:懒惰是阻碍成功的最⼤关卡。
关于接下来该学习什么,怎么学习做⼀个规划:
1、Qt编程
我是真不知道该怎么弄了,没有C++基础;虽然这段时间也看了看C++,总觉得不是⼀两天能成事的。
相关的Qt资料也看了⼀⼤把,也是云⾥雾⾥,不知如何下⼿。
这是为关键!
2、关于Linux下的多线程编程
多线程,资料很多,多花时间应不成问题。
3、对有些知识的再学习
好多东西就是太多了,反⽽不知道怎么办了。
再梳理⼀下应该是必要
的。
4、作为⼀个硬件⼯程师,我算是在软件的天堂⾛了⼀圈了。
ARM这个平台,原理该如何设计,最⼩系统如何搭建,DDR和NAND
的设计和⾛线⽅法(虽然我没这个条件去打样,可还是要深⼊研究)。
说到硬件设计,怎么说也说不完了,不说了!
4、EasyARM-i.MX283学习之点亮LED灯
1、按照教程安装好eclipse:参照10.4节的做法
2、操作步骤
2.1新建⼯程file->new->project
2.2在C/C++,那栏选C project
2.3给⼯程取个名字led后,然后下⼀步
2.4 ⼯程建好之后,开始新建我们需要的代码⽂件了
建三个⽂件分别是main.c led.c led.h ,其实建⼀个main.c就可以了,但⼩⼯程也可以往细了做。
file-> new->source file 是创建c ⽂件,file-> new->header file是创建.h⽂件。
2.5 ⽂件创建好后,如下所⽰
2.6 设置编译器的编译环境
2.7 编写相应C语⾔代码
代码百度⽹盘:/doc/92f9a419d4d8d15abf234e91.html /s/1gd0KXof
代码注释较少,因我的Linux下没有中⽂输⼊法,结合《嵌⼊式Linux开发教程(上册)》,应该较易理解。
2.8 编译连接
选者build project
eclipse下如何查找⽂件定义的位置和头⽂件;快捷键F3
⽹友办法:/doc/92f9a419d4d8d15abf234e91.html /topics/330079363
2.9 ⽣成的⽂件如下,最下⾯绿颜⾊的led⽂件就是我们⽣成的可执⾏⽂件。
makefile⽂件也是设置好交叉编译器⾃动⽣成的。
2.10 如何把⽣成的led ⽂件放到开发板上执⾏
通过nfs⽂件系统,或者将led⽂件复制到开发板上。
eclipse⽀持远程GDB,我当时试的时候弄了半天,⽂档上也是⼀笔带过,后来终于弄好了,但也没有远程GDB 过。
有关GDB,可以参考这篇博客
/doc/92f9a419d4d8d15abf234e91.html /uid-28364879-id-4516353.html
假设已经共享了,执⾏led⽂件./led 就可以观察到led的闪烁了。
关于NFS 共享,按照相关资料应该很容易,就不在写了
2.11设置成开机⾃动运⾏led灯
说到这,当时我只想试⼀下不加“空格&”的结果是什么,结果执⾏后⼀直⽆反应,按什么都不起作⽤,只能够重新装系统。
以前还能通过OTG接⼝刷机,当OTG怎么也不成功;后来不得已⽤存储卡刷机,我当时还以为坏了。
多花时间折腾多少是有好处的;期间有⽹友告诉我使⽤uboot 下挂载根⽂件系统,当时
也没有做成功,但这个⽅法是肯定的。
这是修改后的,保存后,开机⽴即执⾏了;
2.12如何关闭这个led
每次开机之后,led灯不停闪烁,再次执⾏led⽂件,发现也⽆法关闭;这是使⽤kill 命令,终⽌进程;⾸先输⼊ps查看进程,找到相应进程然后kill 进程
如:kill 1183 结束led 进程;。