嵌入式知识总结

来源:互联网 发布:在淘宝上买了二手钢琴 编辑:程序博客网 时间:2024/05/19 20:59

//首先声明这片文章会不断的更新
第零章:写在前面

   首先呢,先说明一下自己写这篇文章的目的。从四月份开始接触,到七月份开始真正的学习,直到今天的基础知识部分的视频全部刷完,历经差不多五个月的时间终于学完嵌入式的基础知识部分了。到了今天这一步,我不想着急的去做接下来的四个项目的实践了。先回顾下这五个月学到的东西,争取做一份自己以后可以遇到问题到这里找到答案的地方。   其实,写这篇文章还有一个目的,就是想给那些想学习嵌入式的人一些自己的建议。我当初接触到这个嵌入式完全是一个偶然的机会,找到国嵌的群,然后稀里糊涂的买了他的视频和开发板,然后就上了嵌入式这条贼船。接下来的这篇文章的可能会带有一些个人观点,希望看到这篇文章的同学不要在意。   先说一下基础准备部分吧,学习嵌入式这个庞大的体系的知识结构,你想学的精通我感觉非常的困难,因为涉及的方面太多太杂。但是如果你还不死心的话,非要上这条贼船的话,我希望你至少有这么几条知识准备,首先你要对C语言非常的熟练,不一定你可以达到ACM强队的水平,但是基本的语法什么的应该了解,函数指针,结构体,动态分配内存等等,希望你有一个详细的了解。除此之外,数据结构最好做好这方面的准备,因为在嵌入式ARM这里你肯定能够会接触Linux而且Linux会在你的生活中扮演非常重要的角色,当然你说我立志学习wince的话,我就无话可说了。最后 ,操作系统这本书,希望你能够理解这本书里面的大部分知识,不然的话你就会像现在的我一样很多的属于名词都要理解很长一段时间。   说完了我自认为的储备知识,我想如果你还没有死心非要走嵌入式这条路的话,你肯定会选择一个培训机构或者一款培训视频了。当然我没有上过什么培训班也不是知道在培训班里面会有什么样的好处,所以我不谈培训班的。我来说一说培训视频吧。虽然我上的是国嵌的视频课,但是我并没有那种一日为师终身我为父的感觉,因为国嵌的网络视频课程并没有给我很好的学习体验。(当然这仅代表我的个人观点,因为买过他的产品的人知道,他们家的客服简直。。。而且他的一些讲解,都是一知半解的感觉。)很多的人都在推荐韦东山老师的视频,具体怎么样我也不知道。在CSDN学院里面就有韦老师的课程有兴趣的同学可以自己参考一下。买视频选对了将是之后,一定要选择讲解视频里面的开发板,因为对于一个初学者,我认为你如果没有标准的参考代码的话,很可能你真的混困在一个地方很长一段时间。对此我深与体会。   最后,既然你已经下定决心要学习嵌入式了,我希望你做好准备,迎接这个巨大的挑战,因为嵌入式的课时很长,很可能你会坐在电脑前面长达10个小时之久,我不是在吓唬你,这是真的。

第一章:开发前的准备工作

前面的一大堆废话之后,接下来的很长的一段时间我都会按照国嵌的学习路线介绍一下一些基础知识,虽然不是很喜欢国嵌的教学,但是对于他的体系设计,我还是非常的敬佩的。首先你要有一个Linux的虚拟机,因为在之后的学习过程中我们采取的是交叉开发环境下学习的。置于怎么安装和下载虚拟机,我想在网上应该会有这方面的介绍了。安装完虚拟机之后,我想说一下几个软件的应用以及一些基本的设置,WINSCP我不大用,就不说了。secureCRT这个软件,我的用处主要是串口显示的作用,在配置时注意协议选择串口serial,选择之后选择自己的com口,你的端口是第几个口,你就选第几个口,至于怎么看,我想你应该会的,波特率为115200这个非常重要,不然容易乱码。然后把流控关了,置于为什么关,具体我也不清楚,应该是在将流控全部交给开发板吧。source insight这个是你查看代码的一个大利器,最好你要在smb建立网络映射驱动盘之后,再去添加,在添加的时候不要忘记添加*.s *.S的文件,不然你会失去很多的重要的汇编文件。 1.1 Linux的一些命令复习
lsls -a /*显示隐藏文件,这里指的隐藏文件在Linux系统 中常以.文件名存在*/ls -l /*显示详细信息,大小,权限(文件所有者,文件所有者组,非文件所有者组 r=4 w =2 x=1)*/cd cp mv /*这种命令就不说了*/insmod /*安装驱动*/rmmod /*卸载驱动*/lsmod  /*显示安装的驱动和设备号*/du /*查看多少文件*/pwd /*查看当前文件路径*/tar cvf ** /*打包文件为cvf*/tar xvf ** /*解开打包文件*/tar xvzf xz -d -k mount /*挂载光盘*/find /*查找文件*/ps /*查看进程*/rpm -ivh 安装rpm包文件man /*帮助*/shutdown -h now /*关机*/
1.2 Smb服务器的配置修改配置文件中的path路径,browsable浏览改成可以浏览。重启生效。注意在每次开启smb的时候,注意关闭Windows的防火墙,关闭Linux的防火墙/etc/init.d/iptables stop重启smb /etc/init.d/smb restart关闭selinux (据说这是美国安全局弄得一个非常好的安全系统,具体怎么样,作为一个初学者不了解)setenforce 01.3 配置TFTP和NFS修改/etc/xinetd.d/tftp 的文件中的disable改为no,并修改服务器目录修改/etc/exports 的共享IP和目录只说这么一点吧。因为索然这是准备尝试阶段,但是这一阶段常用的命令不用记录,不常用的命令有需要的时候就去查书了。

第二章:裸机开发

 至于裸机开发的重要性,对于我一个刚刚开始接触嵌入式的菜鸟来说,不可能说得明白。 2.1 Makefile等 Makefile在国嵌的视频中只是大体讲解了一下,我将在10月份左右或者早点写一写Makefile的知识。 《跟我一起写Makefile》这本书希望大家读一下。 2.2 bootloader 对于bootloader分为两大部分,具体见下图。(这里先留一下最后再加图吧,加不上图。) 但是在这里我并是不想干说BootLoader的组成,我更想介绍一下BootLoader在整个嵌入式的中的作用。 BootLoader是在整个系统的开头部分,它主要负责着嵌入式最初的硬件的初始化,驱动和内核的加载。 在设备上电的那一刻,CPU就开始运行,通常情况下在某一个固定的地址开始运行。也就是flash芯片的起始物理地址,CPU在flash上就开始执行BootLoader了。BootLoader在语言的组成上面也是由两部分组成,一部分是由汇编代码组成,这些由汇编代码组成的部分主要的作用就是,对于CPU,PLL,DDR,Cache等硬件完成初始化,这样做的目的是为了,使得CPU和内存能够稳定的运行,进而解压第二部分的image,并拷贝到内存中执行。接下来的第二部分是由C语言代码构成的,但是这部分的代码是有压缩的,这部分代码完成了串口,flash,网卡等一系列驱动的初始化,并且创建一个shell环境,等待用户的输入。整个CPU的工作的过程中,mmu是关闭的,所有的地址均是访问的物理地址。 2.3 核心初始化 核心的初始化中的第一步就是配置异常向量表,那什么是异常呢?异常就是因为内部或者外部的一些时间,导致处理器停下正在处理的工作,转而去处理这些发生的事件。在ARM中存在7中异常,reset,undefined instruction(当在处理过程中遇到不存在的指令的时候就会进入到这种异常当中),software interrupt(我的理解就是由软件模拟的中断,这个地方不是很理解,留着。),预取指令失败进入异常,数据中止异常,中断异常,快速中断异常([两者的区别](http://blog.csdn.net/michaelcao1980/article/details/19542039)) 那怎么处理呢?当发生其中的一条的时候就会跳转到对应的异常的固定的地址。 这个地方不得不推荐一本书,详细的讲解了u-boot的start.S的每一条代码的含义。李茂先生的《Uboot中start.S源码的指令级的详尽解析》在玩啥很难过找一下应该能找到,要是找不到的话,可以加我的群群文件里面有。群号:511219949 2.4 时钟初始化 昨天晚上读了,S3C2400的开发手册,对于其大体有了一定的了解,我的英语水平有限,如果有理解错误的地方希望得到指正。首先S3C2400的时钟的来源是来自外部的晶振和外部的时钟源,经过分频的一系列的过程产生了,MPLL,在MPLL的基础上对于产生 了FCLK,HCLK,PCLK。参考U-boot这三者的分配为1:4:8.首先设定MPLLCON的寄存器的值,在输入晶振频率为12MHZ的前提下,配置MDIV,PDIV,SDIV的值,来确定输出的晶振的频率为405MHZ,配置好了,MPLL之后,在figure7-5可以明确分fclk的频率和MPLL的频率是相等的,那么在这样的前提下再去分配,FCLK(CPU)和HCLK(AHB总线上的,储存器,中断,LCD,DMA.USB的host模式),PCLK(WDT,IIS,IIC,PWM,MMC,ADC,UART,GPIO,RTC,SPI)。配置CLKDIV寄存器中的HDIVN,PDIVN,寄存器来确定三个时钟频率的比例关系,分别为2,0。由于HDIVN不为0,那么CPU就会进入异步模式,操作cp15寄存器,来明确,CPU的工作模式。这个值为0XC0000000; 2.5 内存初始化 2.6 C语言环境初始化 2.7 MMU初始化 2.8 中断初始化 2.9 Nandflsh初始化 2.10 串口初始化 2.11 DMA初始化 2.12 LCD 初始化 2.13 触摸屏初始化 2.14 网卡搭建
原创粉丝点击