您好,欢迎光临本网站![请登录][注册会员]  
文件名称: ARM裸机编程.pdf
  所属分类: 硬件开发
  开发工具:
  文件大小: 59mb
  下载次数: 0
  上传时间: 2019-07-04
  提 供 者: jia_w*****
 详细说明:整理韦东山老师的开发笔记 -- ARM祼机开发部分,有需要的拿走,在此向韦东山老师致敬并且单片机的价格优势正在逐渐消失,我们在淘宝搜索一下,STM32开发板的基本都是1-200元,而一个能够运 行LinuⅨx系统的板子, nanop的价格却在100元左右。一个能够运行 Linux操作系统,有512MDDR内存,有四核 处理的的ARM开发板,他只需要99元。所以说,现在单片机的价格优势正逐渐消失,他只能保持微弱的优势就是 稳定性这一特点。 下面来看看使用的单片机和使用操作系统开发的产品,比如闹钟、自动售货机就是单片机做的 但自动售卖机,他—旦需要连接网络,需要wiFi,他很可能就需要操作系统。现在的新型自动售卖机,上面有微 信支付,就必须要操作系统。 像无人机,既用单片机也用 Linux操作系统。单片机可以更加及时的处理一些信息。看这些产品,你更想做哪些产 品? 52 世5 《 患 带非带 技术方面 我们的操作系统 E Linux,他需要—个 Bootloader,这个 Bootloader就是一个单片机裸板程序的大全,只要掌握了 Linux的 Bootloader,对单片机是轻而易举。在后面视频,我会讲解这点。所以说,我告诉你们,学单片机没前 途了。 当然我说的是一般情况,你说特例我就完翬了,周立功做单片机的,年收入几亿,这没办法说。注意,我说的是学 习,在学习上,你不需要用单片机来学习,但是在工作中,我们设计产品的时候,如果单片机的性能更好,我们就 要选择单片机。就比如说小米的智能插座,他就是使用单片机来做的,如果同一个功能,用单片机可以省成本, 我干嘛不用单片机呢?卖出几百万台设备,每一个省一毛钱,就可以省几十万。我只告诉你,在技术方面,一旦我 们掌握了 Linux的 bootloader,反过来,对单片机来说,他是小菜一碟 第2课没有前途为何还要学习单片机 为什么没前途也要学习单片机? 因为它是个很好的入口。 单片机的学习可以让我们抛开复杂的软件结构,先掌握硬件操作,如:看原理图、芯片手册、写程序操作寄存器 等。在上—节视频里,我刚把单片机贬得无是处,说单片机没前途了,这节视频,我又要告诉你们,没有前 途,也要学习单片机。为什么? 首先,我说不用学习单片机,是指不要使用老一套得学习方法学习单片机。什么叫老一套的方法? ■硬件上:不要使用C51、STM32这些专用的单片机开发板。如果以后,你不打算从事单片机开发,你用这些 芯片干嘛,研究了两三个月,把这些寄存器都用清楚了,你又用不上,没必要啊。 ■软件上:不要使用Kei、MDK等集成度太高的软件。你用这些软件,你写个main0就可以了,然后调用各种 库,进行傻瓜式操作。这些好用的工具,封装了很多技术细节,使得我们没法了解裸机、单片机的本质。 以后我们会使用新一套的方法来进行单片机的开发。新一套的方法,我们后面再介绍。 硬件上:不要使用C51、STM32专用的单片机开发板; 不要使用 如果以后不从事某个单片机的开发,对某个单片机了解透彻,却用不上,没有必要。 老一套方法 ○O百同两 学习单片机 软件上:不要使用Ke!、MDK等集成度太高的集成开发环境 这些好用的工具,封装了太多的技术细节,使得我们没法了解裸机的一些本质 我们之所以还要学习单片机,是因为他里面的知识,对我们后续学习 Linux还是有用的。我们首先来看看,一个 Linux系统是怎么一回事。一个嵌入式 Linux系统的软件组成 单片机大全 Bootloader->Lnux驱动-> Linux APP-> Linux Gu( Android/QT) 我们PC机一上电的时候,黑色屏幕上会显示B|OS,这个BOS目的是去启动 Windows内核。 Windows内核再挂载 C盘(系统盘)、D盘(应用盘),最后再去启动应用程序,像QQ、网游等。 同样的道理,我们的 Android手机或者工控设备,也有B|OS,但嵌入式 Linux系统里面不叫B|OS,叫 Bootloader,他的目的是去启动 Linux内核。他首先也是识别应用程序所在的存储设备,挂载根文件系统(在 Windows系统里面的C盘、D盘,在 Linux.里面称为根文件系统)。最后去启动应用程序 Wi ndows主机 Android手机/工控板 BIOS bootloader 启动 1Q百问网 启动 Windows内核 Linux内核 挂载C盘、D盘 挂载 系统盘/应用盘 根文件系统 启动 启动 应用程序 应用程序 仔细的分析下 Bootloader,他去启动内核,他去哪里启动内核呢?显然是去某个地方读出内核,就比如说B|OS是 去C盘上读出 Windows内核,我们的 Bootloader是去Fash或者SD卡读取内核。因此 Bootloader要拥有读取 Flash或者SD卡的能力。有些 Bootload还要显示logo,因此还要具有操作LCD的能力。 Bootloader还要设置开 发板的环境,比如,初始化时钟、初始化內存、还要设置网卡等。这么多事情,都是在 Bootleσader里面实现的 太复杂了,如果你一来就分析整个 Bootloader是非常困难的 那我们怎么学习呢?把他拆开,写出单独的程序,比如:LED点灯、时钟、网卡、Fash都单独写个程序来练习 这些不就是单片机程序吗?所以说, Bootloader是单片机程序的大全。我们为了更好的学习 Bootloader,我们应 该事先一个一个练习硬件,当我们熟悉每个硬件后,再组合起来,就是一个 Bootloader。 太复杂,怎么学习? 拆开分解。 Android手机/工控板 写出单独的程序 √初始化时钟 LED bootloader小>去 Flash/SD卡 初始化内存 时钟 读出内核 设置网卡 网卡 不就是 启动 读取F|ash/SD卡的能力 Flash x单片机程序吗? 操作LCD能力」 Linux内核 也要有操作硬 显示go,wmo 件的能力 挂载 根文件系统 驱动程序 启动 应用程序 我们再来看看 Bootloader)启动內核之后,内核再去挂载根文件系统,意味着內核也要有操作硬件的能力,这就是 驱动程序。我们首先来看看一个简单的驱动程序是什么样子。首先我们的应用程序是调用open0、read0 write(O这些标准的接口去访问硬件。那么就进入驱动程序里面,驱动程序里面有对应的 drive open0 drive read0)、 drive write(。最后在驱动程序里面,去配置硬件。这里以如果是一个LED点灯驱动,那么 drive_open0要把GPO设置为输出引脚, drive read(0,返回GPO状态, driver write则写GPO,让引脚输出 高电平或者低电平 应用: open、 read write 驱动: drv open、 drv read drv write ·. www.100ask.org 软件框架 硬件 配置GPo为输出返回GPO状态 写GPO 硬件操作 对于我们的LED驱动程序,你需要提供 drive open0、 drive read0、 drive write0这些接口,这就是他的框架 具体的怎么操作硬件,就是硬件操作。所以说,我们事先在单片机里面,熟悉熟练的掌握硬件操作。即驱动程序 的组成 驱动程序=软件框架+硬件操作 你需要学会看原理图、看硬件怎么连接、看芯片手册、知道怎么读写寄存器。这一切都可以先在单片机里面学习, 去掌握。以后学习 Linux驱动时,把重点放在软件框架就行了。 我们可以事先学习单片机,单片机的学习可以让我们先抛开复杂的软件结构,先掌握硬件的操作,如:看原理图、 芯片手册、写程序操作寄存器等。这就是为什么单片机没有前途,我们也要学习。是因为他里面涉及的硬件操 作,对我们后续的学习,非常有用处 现在我们知道了,我们学习单片机,不是为了掌握单片机的开发技能,而是为了掌握Bσotlσader,掌握硬件操 作 在单片机中学会 驱动程序=软件框架+硬件操作:早响部 第3课怎么学习单片机选择开发板与开发工具? 本节教你如何学习单片机,如何选择合适的开发板和开发工具。 现在我们知道单片机是要学习的,那么怎么去学习单片机?在上一课我们说不要使用老一套的方法学习,实际上是 指的两个问题。 第一:选择什么开发板; 第二:使用什么开发工具; 我们学习单片机的目的是干嘛?目的是为后续嵌入式 Linux学习服务。在这条学习线路上: 单片机-> bootloader-> Linux系统/脶动->APP(QT)可以使用同一套开发板。 我们选择开发板的原则是:资料丰富。 学习路线: 纯C/C+*面 单片机→ bootloader→ linux系统/驱动→APp QT/Android www.100ask.org 可以使用同一套开发板 开发板首推三星( SAMSUNG)系列的,资料最开放, ■有S3C2440、S3c6410、S5PV210、 Exynos4412 ■然后是德州仪器(T)的,T|开始不开放资料,现在逐渐公开了,有AM437X、AM335X 然后是飞思卡尔( rescale),有MX6; ■还有其它国产芯片:全志、瑞芯微; 我们用百度进行搜索,看哪个资料最丰富。结果如下: S3C2440 >约926万搜索结果 S3C6410约43万搜索结果 AMSUNG S5PV210 >约221万搜索结果 三星 Exynos4412约145万搜索结果 中 EXAS AM437X 约45万搜索结果 INSTRUMENTS 德州仪器 AM32164万搜素结果 www.100ask.org freescale 飞思卡尔 iMX 6 约21.9万搜索结果 aw Rackchip 资料不开放 全志瑞芯微 再在搜索关键词中加入“教程′后,S3C2440的搜索结果比AM335X更多,因此S3C2440的资料仍是最多的,T 的营销更好,当然,T作为工控板,其用户也是很多的 所以,从教程的丰富程度来看,S3C2440为首选开发板 我们后面会考虑使用T的芯片重新录制一套视频,但需要2-3年的功夫,所以,现在还是使用S3C2440吧。 现在普遍有个错误观点:S3C2440过时了,它还是ARM9内核,现在 Cortex-A7、 Cortex-A8、 Cortex-A9、 Cortex-A15都出来了,它的性能太差了。性能差没错,但它是否过时了呢? 那要看学到的知识是否过时。 我们首先来看看一个芯片是怎么组成的,里面有CPU、外设串口、12C、SP、LCD等。 外设 UART CPU 120 LCD SPI 片 我们写程序的时候,是去操作这些模块的寄存器,访冋这些模块,并不是去操作C門U。等你工作的时候,你使用 不同的芯片,那么差别在于这些模块,这些硬件的操作,差别不在CPU操作,你写程序的时候,根本不涉及CPU 的内部机制。 不同芯片的差别:在于外设操作,不在于CP∪,写程序几乎不涉及CPU,只有涉及中断时,才会跟CPU的机制有 点关系,但是不同CPU的架构差异很小,并且我们后面开发 Linux驱动时,内核已经帮我们做好了这些处理,根本 不需要去关心。 从上一课我们知道,驱动=软件框架+硬件操作。这个软件框架对于所有的芯片都是一样的,因为都是用 Linux内 核。而这个硬件操作,你在2440上掌握了串口操作,2℃操作、SP操作,掌握了这些硬件的语言,你换—种芯 片,是完全类似的。 驱动程序=软件框架+硬件操作 对于所有芯片一样100a在532440掌握了外设的操作 掌握了硬件原理,换个芯片, 完全类似 我假设你选择了2440开发板,那么怎么使用2440开发板来学习单片机的开发呢?又使用什么开发工具呢?以前在 Windows开发的时候,我们使用ADs、Keli、MDK等,你直接写个 maino函数,所有的细节都帮你实现了,谁来 调用main0函数,有他帮你做了。这main0所生成出来的代码,怎么放入到内存里面,这工具也帮你做了,我们 基本上只需要写 maino函数,只需要写C语言就行了。但是这里掩盖了太多的技术细节,你看看我们[官网->学习 路线]htt://Ww.100 ask. net/a/ howtostudy)的这篇文章,里面有个比较 ① Windows下的单片机学习,深度不够 Windows下有很好的图形界面单片机开发软件,比如kel、MDK等 它们封装了很多技术细节,比如: 你只会从main函数开始编写代码,却不知道上电后第1条代码是怎么执行的; ■你可以编写中断处理函数,但是却不知道它是怎么被调用的 你不知道程序怎么从Fash上被读入内存 ■也不知道内存是怎么划分使用的,不知道栈在哪、堆在哪; 当你想裁剪程序降低对Fash、内存的使用时,你无从下手; 当你新建—个文件时,它被自动加入到工程里,但是其中的机理你完全不懂 等等等。 ②基于ARM+ Linux裸机学习,可以学得更深,并且更贴合后续的 lLinux学习。 一m ■实际上它就是Linuⅹ下的单片机学习,只是一切更加原始:所有的代码需要你自己来编写;哪些文件加入工 程,需要你自己来管理。 ■在工作中,我们当然倾向于使用 Windows下更便利的工具,但是在学习阶段,我们更想学习到程序的本质 一切从零编写代码、管理代码,可以让我们学习到更多知识 ■你需要了解芯片的上电启动过程,知道第1条代码如何运行; ■你需要掌握怎么把程序从Fash上读入内存 需要理解内存怎么规划使用,比如栈在哪,堆在哪; 需要理解代码重定位; ■需要知道中断发生后,软硬件怎么保护现场、跳到中断入口、调用中断程序、恢复现场; ■你会知道,main函数不是我们编写的第1个函数 你会知道,芯片从上电开始,程序是怎么被搬运执行的; 你会知道,函数调用过程中,参数是如何传递的 你会知道,中断发生时,每一个寄存器的值都要小心对待; 等等等 你掌握了ARM+ Linux的裸机开发,再回去看 Windows下的单片机开发,会惊呼:怎么那么简单!并且你会 完全明白这些工具没有向你展示的技术细节。 如果我们基于ARM+ Linux,不使用这些 windows工具,你可以学得更深,并且单片机的大全 Bootloader,他就 是ARM+ Linux开发的,他并不使用 Windows下的工具。你基于ARM+ Linux学裸板、学单片机,你可以学得更 多,因为我们一切都从零开始的。我们既管理这些代码,也可以知道芯片上电的时候做了什么事情,知道程序自己 怎么把自己读到内存,且知道怎么去规划内存,知道怎么代码重定位… 我说的这些概念,你可能听都没听过,这是因为 Windows下这些好用的工具把这些统统都给屏蔽了。我们使用 ARM+ Linux进行裸板开发,一旦掌握了ARM+ Linux开发这套机制,再回过头去看这些 Windows工具、看STM32 的话,你只需要几分钟就可以搞定。并且你可以无缝进入后续的学习,因为你已经熟练掌握了Liux的操作环境, 后面的 Bootloader是在inux下开发的,后面的LnuX驱动也是在 Linux下开发的。 再去看STM32可迅速掌握 掌握3240MHM百间网 bootloader 2无缝进入后续的学习 Linux驱动 所以我们怎么去学习单片机的开发呢? 使用S3C2440开发板,在Linx环境( Ubuntu)下使用 arm- Linux-gc工具来编译程序 你编写代码的时候,可以使用 Windows下各种好用的工具,文本工具等,但便宜的时候,使用 arm-Linux-gcc.来 编译。 查看《《所有章节目录》》 VARM裸机加强版 第001课不要再用老方法学习单分机和ARM 第002课ubut环境挎建和butu图形界面架作(免费 第003课加w入/命令 第004课v端辑器 第05加ux进阶命令 第06课开发板熟悉与体验费 第07课棵机开发步骤和工具使用免 第08课第1个ARM架饭程序及引中部分免费) 第009课9c和 rm-linux-gccfaMakefile 第070课掌握ARM片的钟体系 第07牢国R的使用 第012课内存控器与 SDRAM 第073课代码重定位 第014课异常与中断 第075 NOR Flash 第016课 Nand flash 第017课LCD 第018课ADC和然莞屏 第019课2C 第20课SP 取自"htp://wik100 ask. org/ ndex. php?tite=第001课不要再用老方法学习单片机和ARM&odd=974 分类:ARM裸机加强版 ■本页面最后修改于2018年1月24日(星期三)07:34。
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: arm裸机开发的优势
 输入关键字,在本站1000多万海量源码库中尽情搜索: