嵌入式系统设计

开源社区模式的arm-linux嵌入式技术培训FAQ

流过昼夜 提交于 2020-02-29 06:45:20
问:什么是嵌入式? 答: 嵌入式是‘嵌入式计算机系统’的简称。从英文Embedded System译来。 嵌入式系统是对具备计算能力的非PC电子设备的泛称。 可以这么说,除了PC、服务器、小型机、大型机和超级计算机,其他可以运行程序的电子设备都属于嵌入式系统。 比如,手机、电子仪表、手持终端、自动洗衣机、工业机器人、GPS、电视机顶盒、汽车电子、医疗仪器、航天卫星都有嵌入式系统。 我们的培训服务是在ARM处理器和Linux操作系统技术范围内,对编程技能的训练。 问:什么是ARM? 答: 是一家英国设计公司的名字,他们设计CPU,是Intel的竞争对手。他们设计的CPU叫作ARM处理器。 问:什么是Linux? 答: Linux是一个操作系统。windows的唯一竞争对手。Linux的源代码是公开的,免费使用和学习。 著名的Linux发行版有Federa, Ubuntu, Debian等。 问:什么是开源? 答: 开放源代码的简称。通常指开源软件。我们这里特指开源嵌入式。 问:什么是社区? 答: 某一开源项目的开发者和用户共同构成的松散社会组织。 问:什么是开源社区模式? 答: 指遵照开源软件社区原则,对项目开发活动进行组织、管理和发布的教学方法。 问:开源社区模式有什么优势? 答: 1)社区是一个自适应社会,每个人都有自己的角色,锻炼参与者的综合能力。 2)社区内交流的媒介是源代码

到底什么是嵌入式?什么是单片机?

懵懂的女人 提交于 2020-02-27 15:20:23
凡是从事计算机或电子信息相关领域工作的童鞋,一定都听说过 嵌入式 和 单片机 吧? 很多人应该知道,这两个名词和硬件系统有着非常密切的关系。一听到它们,就容易让人联想到插满芯片和针脚的电路板: 但是,如果要问具体什么是嵌入式,什么是单片机,它们之间究竟有什么区别,我相信大部分人并不能解释清楚。 今天,小枣君就给大家做一个入门科普,揭秘上述问题的答案。与此同时,我还会给大家介绍一下,我们经常听说的51、STM32,究竟是什么。 什么是嵌入式 首先,我们来看看什么是嵌入式。 嵌入式,一般是指嵌入式系统,英文叫作:embedded system。嵌入式开发,其实就是对嵌入式系统的开发。 IEEE(美国电气和电子工程师协会)对嵌入式系统的定义是:“用于控制、监视或者辅助操作机器和设备的装置”。 国内学术界的定义更为具体一些,也更容易理解: 嵌入式系统,是以应用为中心,以计算机技术为基础,软件硬件可裁剪,适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。 以应用为中心,说明嵌入式系统是有明确实际用途的。以计算机技术为基础,说明它其实就是一种特殊的计算机。软硬件可裁剪,说明它有很强的灵活性和可定制能力。 专用计算机系统,“专用”所对应的,就是“通用”。我们常用的个人PC、笔记本电脑、数据中心服务器,可以用于多种用途,就是“通用计算机系统”。 嵌入式系统究竟具体应用于哪些“专用

嵌入式课程作业1

僤鯓⒐⒋嵵緔 提交于 2020-02-27 09:51:08
#CPU体系结构的种类特点及应用场合 一、ARM ARM架构,过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。 特点: 体积小、低功耗、低成本、高性能;支持 Thumb ( 16 位) /ARM ( 32 位)双指令集,能很好的兼容 8 位 /16 位器件;采用RISC体系结构,大量使用寄存器,指令执行速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活简单,执行效率高;指令长度固定;对于不同系列的ARM有各自的特点。 应用领域: 工业控制领域:作为32的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展。 网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上进行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。 消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。 成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SIM智能卡也采用了ARM技术。 二、X86/Atom

蓝桥杯嵌入式设计开发——LED篇

陌路散爱 提交于 2020-02-26 03:04:31
博主将会从 硬件和软件 这两个方面去和大家分享怎么样去使用led。 硬件相关知识 :博主先提出几个问题。LED灯怎么样才能亮呢?怎么样去用STM32MCU去自由的控制led灯的亮灭呢?怎么去查看开发板的外围硬件电路呢? (1)我们首先去查看蓝桥杯嵌入式设计开发板的原理图(PS这个原理图在我们购买板子的时候,会提供给我们),然后找到LED部分。如下图所示。 我们以HD0为例,如果我们给HD0一个低电平信号,然后给再给NLE端口一个下降沿(ps也就是给NLE一个高电平,然后接着给一个低电平)。然后锁存器就会锁存HD0端口接入的低电平信号,一直到NLE端口下一个下降沿信号的来临继续锁存即时的HD端口信号。那么HD 0—8端口的电平信号从哪儿来呢,我们查看板子的原理图可以得知HD 0—8端口与MCU的PC8-PC15相连。我们控制MCU的PC8—PC15端口输出信号就可以控制LED。那么如何控制MCU的PC8—PC15的输出信号怎么控制呢,接下来将要分享的软件方面知识正在等着你哟。 软件相关知识 :伙伴们知道怎么去查看库函数的解释吗?我们控制LED需要用到哪些库函数呢?我们怎么去初始化PC8—PC15的工作方式呢? (1)我们需要知道mcu端口有各种工作方式,既然我们要通过mcu端口去控制LED,那么我们就应该初始化mcu端口的工作方式。 (2

嵌入式C语言优化技巧

十年热恋 提交于 2020-02-24 13:32:10
精彩内容 嵌入式系统是指完成一种或几种特定功能的计算机系统,具有自动化程度高,响应速度快等优点,目前已广泛应用于消费电子,工业控制等领域。嵌入式系统受其使用的硬件以及运行环境的限制,非常注重代码的时间和空间效率,因此选择一种合适的开发语言十分重要。 目前,在嵌入式系统开发中可使用的语言很多,其中 C语言应用得最广泛。虽然用 C 语言编程具有许多优点,但基于嵌入式系统的C语言和标准 C语言又有很大区别。接下来《单片机与嵌入式系统应》小编结合嵌入式系统的特点和高手们的一些积累,给大家整理出在程序设计中代码优化的一些小技巧。 1 嵌入式C语言的特点 作为一种结构化程序设计语言,C 语言兼顾多种高级语言的特点,具有很强的功能性和可移植性。但在嵌入式系统开发中,出于对低价产品的需求,系统的计算能力和存储容量都非常有限,因此如何利用好这些资源就显得十分重要。开发人员应注意嵌入式 C语言和标准 C 语言的区别,减少生成代码长度,提高程序执行效率,在程序设计中对代码进行优化。 2 C代码在程序中的优化 现在的 C 编译器会自动对代码进行优化,但这些优化是对执行速度和代码长度的平衡。如果要获得更小且执行效率更高的代码,需要程序员手工对代码进行优化。 3 变量类型的定义 不同的数据类型所生成的机器代码长度相差很多,变量类型选取的范围越小运行速度越快,占用的内存越少。能够使用字符型(char)定义的变量

为什么说嵌入式开发比单片机要难很多?谈谈单片机和嵌入式的经验

巧了我就是萌 提交于 2020-02-19 11:37:37
单片机和嵌入式,其实没有什么标准的定义来区分他们,对于进行过单片机和嵌入式开发的开发者来说,都有他们自己的定义,接下来,就谈谈本人对这两个概念的理解和感悟。 首先明确概念,什么是单片机,单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。 比如最经典的51系列单片机,如下图所示,外观只是一块一个拇指大小的长方体芯片,共40个引脚,里面包含了逻辑运算单元。实际上也就是一个cpu。 在最开始接触单片机的时候,还曾经有过一个疑问,为什么单片机是黑色的而不可以是别的颜色,后来才知道是单片机材料的限制。 对单片机而言,其实一个芯片就是全部,其他的比如单片机最小系统都是为了单片机的正常运作而加入其他元件,比如晶振,5v电源,电感电阻等。当然最小系统只能保证单片机正常运行,几乎实现不了基于单片机的任何应用。 为了使单片机实现应用,必须要加入其他外设。比如按键,led灯,led屏,蜂鸣器,各种sensor。这也就是市面上很多公司都在做的单片机开发板。 总结

嵌入式根文件系统的移植和制作详解

青春壹個敷衍的年華 提交于 2020-02-19 08:23:33
理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的,文件系统简单的说就是一种目录结构,由于 linux操作系统的设备在系统中是以文件的形式存在,将这些文件进行分类管理以及提供和内核交互的接口,就形成一定的目录结构也就是文件系统,文件系统是为用户反映系统的一种形式,为用户提供一个检测控制系统的接口。   根文件系统,我认为根文件系统就是一种特殊的文件系统,那么根文件系统和普通的文件系统有什么区别呢?由于根文件系统是内核启动时挂在的第一个文件系统,那么根文件系统就要包括Linux启动时所必须的目录和关键性的文件,例如Linux启动时都需要有init目录下的相关文件,在 Linux挂载分区时Linux一定会找/etc/fstab这个挂载文件等,根文件系统中还包括了许多的应用程序bin目录等,任何包括这些Linux 系统启动所必须的文件都可以成为根文件系统。   Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。   Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动

搞嵌入式的,为啥要有uboot

旧街凉风 提交于 2020-02-17 19:59:42
为什么要有uboot 1.1、计算机系统的主要部件 (1)计算机系统就是以CPU为核心来运行的系统。典型的计算机系统有:PC机(台式机+笔记本)、嵌入式设备(手机、平板电脑、游戏机)、单片机(家用电器像电饭锅、空调) (2)计算机系统的组成部件非常多,不同的计算机系统组成部件也不同。但是所有的计算机系统运行时需要的主要核心部件都是3个东西: CPU + 外部存储器(Flash/硬盘) + 内部存储器(DDR SDRAM/SDRAM/SRAM) 1.2、PC机的启动过程 (1)部署:典型的PC机的BIOS程序部署在PC机主板上(随主板出厂时已经预制了),操作系统部署在硬盘上,内存在掉电时无作用,CPU在掉电时不工作。 (2)启动过程:PC上电后先执行BIOS程序(实际上PC的BIOS就是NorFlash),BIOS程序负责初始化DDR内存,负责初始化硬盘,然后从硬盘上将OS镜像读取到DDR中,然后跳转到DDR中去执行OS直到启动(OS启动后BIOS就无用了) 1.3、典型嵌入式linux系统启动过程 (1)典型嵌入式系统的部署:uboot程序部署在Flash(能作为启动设备的Flash)上、OS部署在FLash(嵌入式系统中用Flash代替了硬盘)上、内存在掉电时无作用,CPU在掉电时不工作。 (2)启动过程:嵌入式系统上电后先执行uboot、然后uboot负责初始化DDR

嵌入式wince基础知识

醉酒当歌 提交于 2020-02-17 14:43:59
  因项目需要,用到手持设备的开发,手持设备搭载的是wince系统,之前多多少少接触过嵌入式编程,一直以为自己的处女开发是在Linux,没想到还是没逃出微软的“魔掌”,不开心归不开心,项目还得继续,先学习嵌入式wince的基本知识吧,为以后的开发打好基础。 什么是嵌入式系统    我现在觉得有些概念经过一段时间的沉淀,进进出出大脑多次,就能体会到一点点的不一样的味道,就像嵌入式系统,之前看一些定义,一点感觉都没有,理解不能,囫囵吞枣的感觉不好,现在有一些时间了,也接触过几个小项目,慢慢的就觉得嵌入式系统就是针对通用系统(PC)提出的针对特定应用而存在的概念,这些系统都突出某些功能,而对其他功能没有需求,甚至根本就不需要,比如我的电脑,通用型的,几乎各个功能模块它都有,显示,键盘,办公软件,等等面向的是大众人群,相对的嵌入式可能就只注重莫一方面的功能,如只注重声音播放(MP3),只需要通信(功能机)等等,所以在mp3里面根本就不需要显卡啊,在功能机上就根本不要网卡啊,这也是可裁剪的官方用词吧。   嵌入式系统分为软件和硬件部门,两个部分都是可裁剪的,硬件可以定制,同样软件也是可以定制,嵌入式操作系统亦是,比如不需要某个module。wince是嵌入式操作系统的一种,另外一种是linux,自己无知,肯定还有其他的,就知道这两个。wince裁剪一下可以出来很多知名的其他系统,但都是变种

嵌入式研发工作划分

别来无恙 提交于 2020-02-17 11:45:04
什么是嵌入式研发 嵌入式研发的标志是:软件研发和硬件研发相互配合。 互联网是固定硬件平台,纯软件开发;机械是没有软件,纯硬件开发。 当今的大部分电子,除去硬件部分就是软件,大到电冰箱,电视,小到遥控里面都是由软件来控制的,为了更通用和自由定制,交由软件控制会越来越多。 工作划分 一个电子产品的研发工作由四部分组成。 硬件研发;主要将硬件平台设计出来。 驱动研发;驱动研发主要工作是在不同系统上驱动硬件工作,不限定于特定系统,驱动研发既需要知道各种硬件知识,各种总线,数据如何传输,也需要知道软件知识,操作系统如何将数据传递给应用层,但是对操作系统的各种纯软件机制不需要过多了解。 平台开发;主要是操作系统开发,稳定,应用支持,纯软件,对操作系统各种机制要了解透彻。 应用层研发;主要实现各种业务逻辑,面向用户。 当前大部分公司情况 当前大部分公司会把工作2和工作3合并,统称为BSP研发。 对于大公司,员工能力较强,做驱动的大部分虽然是学电子的,懂硬件较多点开始,软件知识不足,但是工作中或学习慢慢的对操作系统软件机制也熟系了。 对于中小公司,工作没有划分清晰,员工能力较差,做驱动的电子出身不是很懂操作系统的各种纯软件机制,认为是软件问题;应用层研发认为自己只负责各种业务逻辑,认为操作系统问题是平台问题,应该由驱动解决,工作就会出现互相推脱,研发工作做不大。 来源: CSDN 作者: