嵌入式系统设计

ARM+LINUX嵌入式学习路线

别说谁变了你拦得住时间么 提交于 2019-12-17 23:48:11
我是本科就开始学习Linux,参考了很多资料,其中一直在更新的目前看也只有韦东山老师了,当然还不得不提就是原子哥开始做Linux开发板,还是一样的配方(卖板子,资料全部免费,简单粗暴的模式),感觉韦东山老师的压力估计又大了些。补充:火哥也开始做Linux开发板了,火哥也是我学习STM32路上的榜样,之前还经常在论坛互动,不过工作后由于方向的转换也是很久没去论坛了。 下边分享的是我从之前买的韦东山老师的教程翻出来的,讲的很好(虽然我完全没有照做。。。) ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) (3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。 (2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。 (3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。

作为一个新人,怎样学习嵌入式Linux?(转载)

一个人想着一个人 提交于 2019-12-15 21:37:55
特此声明此文章为转载,如有侵犯,请告知删除。 原文章地址:http://blog.sina.com.cn/s/blog_7880d33501013j2r.html 作为一个新人,怎样学习嵌入式Linux?被问过太多次,特写这篇文章来回答一下。 在学习嵌入式Linux之前,肯定要有C语言基础。汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会)。 C语言要学到什么程度呢?越熟当然越好,不熟的话也要具备基本技能。比如写一个数组排序、输入数字求和什么的。 学C语言唯一的方法是多写程序多练习,编译出错没关系,自己去解决;执行出错没关系,自己去分析。以前我是用 VC来练习C语言的,经常去尝试着写一些C语言竞赛的题目。它们是纯C、纯数学、纯逻辑的题目,不涉及界面这些东西, 很适合煅炼你的编程能力。 回到主题,首先我们要明白你的目的是什么,大概来说所谓嵌入式Linux可以分为两部分:底层系统、应用开发。 如果你是想做应用开发,那么你去把C语言、数据结构、JAVA什么的学好吧。嵌入式应用开发和PC上的 应用开发并没有什么特别要注意的。也许你说在嵌入式上要做些优化,是的,要优化,但是未经优化的程序 和PC上的程序开发没什么差别。另外,当你有能力去优化时,你已经不用来问这个问题了。具体到某个例子, 比如说开发界面,在PC上我们用VC;在嵌入式Linux里也许我们用QT也许用Android

嵌入式开发的四大职业发展方向,仅供参考

亡梦爱人 提交于 2019-12-12 12:18:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 近几年来,随着移动互联网、物联网的迅猛发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用;随着嵌入式技术及相关产品不断渗透到人们日常生活,大大小小公司对于嵌入式开发人才招聘需求猛增。 介绍嵌入式开发职业发展方向之前,先了解一下嵌入式设备的本质。嵌入式设备的本质就是一台专用的、微型计算机,所以就像计算机一样由三个层次的东西组成: 1)硬件,包括cpu(如ARM)、存储(如flash)、I/O(显示模块、通讯模块、视音频模块、I/O控制电路等)。 2)系统级软件,主要是操作系统也就是OS,以及I/O软件如LCD、蓝牙、wifi、CDMA、声音等子系统。 3)应用软件,如基于linux的应用开发,基于Android的应用开发,基于iOS的应用开发等。 事实上,所有带有数字接口的设备,大到飞机火箭,小到手机,电脑,甚至组成普通PC终端设备的键盘、鼠标、硬盘,目前市场上各种智能硬件产品等都使用嵌入式系统。嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物。嵌入式系统无疑是当前最热门最有发展前途的 IT应用领域之一。 嵌入式开发的发展方向有很多,门槛高低不一样。下面主要介绍四大职业发展方向: ARM + Linux/Android开发 据统计,全世界99

计算机三级嵌入式学习笔记

江枫思渺然 提交于 2019-12-10 00:18:39
嵌入式学习笔记(之一) 前言 ​ 笔者在大一下学期一时冲动,直接跳过计算机二级报名考计算机三级嵌入式。没错,我觉得我冲动了,当时想着接触一下嵌入式,学点皮毛也好,考个证下来就更好了,结果,看书做题,发现,我高估自己了喔。 ​ 八十块钱报名费极大可能打水漂,但看完书还是认认真真的把题库刷一遍吧,前面八十分基本全是概念啊,全是啊,我滴天,孩子最不擅长的就是背这些balabala的,哭了,孩子快哭了啊!!!太难啦!!! ​ 做过题记一下笔记吧,加深些印象也好,呜呜呜~ 大致提纲 一、嵌入式系统概论 ​ (1)嵌入式系统介绍及其特性: ​ 专用性;隐蔽性;资源受限;高可靠性;实时性;软件固化。 ​ (2)嵌入式系统的应用 ​ (3)嵌入式系统的逻辑组成: ​ 软硬件两部分:硬件主体是中央处理器和存储器,它们通过输入/输出(I/O)接口和输入/输出设备与外部世界联系,并借助总线相互连接,这些硬件连同嵌入式软件一同构成完整的嵌入式系统。 ​ (4)嵌入式处理芯片: ​ 嵌入式系统的CPU一般具有四个特点:支持实时处理;低功耗;结构可扩展;集成了测试电路。 ​ (5)目前嵌入式处理芯片类型: ​ 微处理器(MCU);数字信号处理器(DSP);微控制器(单片机);片上系统(SoC)。 ​ (6)嵌入式系统的多种分类方法 ​ 可以按用途分类;按实时性分类;按产品形态分类;按系统的复杂程度分类。 ​

物联网操作系统

╄→гoц情女王★ 提交于 2019-12-09 11:53:19
原文:https://blog.csdn.net/lu_embedded/article/details/78363460 前言    今天 PC 和手机时代的操作系统霸主未必能在物联网时代延续霸业 。 操作系统产业的规律是,当垄断已经形成,后来者就很难颠覆,只有等待下一次产业浪潮。 如此关键的产业环节必然是兵家必争之地 。 ARM、谷歌、微软、华为、阿里、海尔 等国内外著名的 IT 企业纷纷推出物联网操作系统,整个产业呈现出群雄逐鹿的壮观景象。 传统的嵌入式系统公司也不甘示弱,纷纷通过开源和并购策略推出面向物联网软件平台,比如 Intel、风河、芯科和 Micrium 。 在一轮新的产业浪潮中,国内创业公司也走在风口浪尖上,他们纷纷推出自己的物联网操作系统,比如 庆科、Ruff 和 RT-thread。   回溯物联网操作系统的发展历程,2014年是个重要的、标志性的起点。正是从这一年开始,ARM、谷歌、微软等国际巨头陆续登场,形形色色物联网操作系统进入我们的视野。    ARM Mbed OS   mbed OS 是 ARM 公司专门为 IoT 设计的一个操作系统平台,它支持所有基于 Cortex M 系列的控制器,mbed OS 是开源的操作系统,详情源代码请看:https://github.com/ARMmbed/mbed-os,更多介绍请看官网:https://mbed

痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(8)- 从Serial(1-bit SPI) NOR恢复启动

不想你离开。 提交于 2019-12-08 16:23:26
  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是 恩智浦i.MX RTxxx系列MCU的1-bit SPI NOR恢复启动 。   在前几篇里痞子衡介绍的Boot Device都属于主动启动的Master Boot Device(Serial(Multi-IO) NOR, SD/eMMC),试想一下如果遇到这样的情况,你选择启动的某个Master Boot Device正常工作一段时间后某次开机突然因为某种未知原因无法启动了,此时系统无法正常工作,但如果你希望系统能够有一定的容错/鲁棒能力,即使这种场合下也能够保证基本工作,那应该怎么做?别担心,i.MXRTxxx BootROM提供了一种解决方案,即Recovery Boot机制,BootROM支持Serial NOR作为Recovery Boot Device,你只需要将备份application事先放进Recovery Boot Device即可,任何主动启动的Master Boot Device启动失败,BootROM会自动启动Recovery Boot Device中的备份application保证系统能正常工作,是不是觉得recovery boot很贴心?今天痞子衡就为大家介绍Recovery Boot: 一、支持的Serial NOR    i.MXRTxxx支持加载恢复启动的主要是1-bit

痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(3)- Serial ISP模式(blhost)

て烟熏妆下的殇ゞ 提交于 2019-12-06 15:21:14
  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是 恩智浦i.MX RTxxx系列MCU的Serial ISP模式 。   在上一篇文章 Boot配置(ISP Pin, OTP) 里痞子衡为大家介绍了i.MXRTxxx Boot的行为配置,其中第1.2节里讲了Boot有三类行为模式:Serial ISP、Serial Boot、Device Boot,后两种都是跟App启动执行相关的行为模式,而Serial ISP模式则是相对独立的Flash下载功能,有了Serial ISP,便可省去专用Flash编程器,今天痞子衡就来详细聊一聊Serial ISP模式。   痞子衡在前面已经讲过Serial ISP模式是一种串行编程模式,在这种模式下,BootROM通过指定的UART/SPI/I2C/USB-HID口来接收来自Host(恩智浦提供了上位机工具blhost.exe或者MCUBootUtility)的Application数据,并将数据下载进i.MXRTxxx支持的所有外部非易失性存储器中,为后续从外部存储器启动做准备。 一、进入Serial ISP模式   i.MXRTxxx上电永远是从ROM启动去执行BootROM程序,最顶层的Boot行为模式由OTP memory里的PRIMARY_BOOT_SRC[3:0]位和芯片外部ISP[2:0]管脚状态共同决定

目前适合去学的行业,绝对适合你!

狂风中的少年 提交于 2019-12-06 10:22:15
------------恢复内容开始------------ 目前,想要提高职业职能的人都有这几个疑问: · 想要转IT,但我年龄比较大了怎么办? · IT行业男生偏多,是不是不适合女生呢? · 代码逻辑差,适合学什么呢? · 想要挣钱,但不想加班太多咋办? 信盈达学院小编 想说有这样一个岗位特别适合你: 这个岗位不怕你年龄大,反而越老越吃香。 这个岗位不在乎你是 20岁,还是40岁,多大年龄都能极快上手。 这个就是嵌入式 IT行业! 下面一份详细的嵌入式学习规划,送给你,让你少走弯路。 1、打好嵌入式软件编程的基础 这一阶段重点打好嵌入式软件编程的基础,包括常用的数据结构,特别是 C语言中对指针的理解和应用。这一阶段的主要目的是学习编程语言、开发环境、和培养自己的编程思维,为进一步学习嵌入式开发打下良好的基础。 2、学习ARM体系结构编程 这一阶段才是真正的嵌入式编程,首先我们要选择一款嵌入式 CPU和一款嵌入式开发平台,目前ARM 嵌入式CPU应用最广泛,这一阶段重点是学习嵌入式CPU的裸机编程: * 熟悉中断 * 定时器 * 串口 * NAND FLASH * 网络控制器 * LCD屏、触摸屏 * I2C 设备 * SPI 设备 常用嵌入式外围设备的硬件工作原理,以及如何使用 C语言来编程、控制这些硬件。这一阶段除了要学习对硬件编程之外,还需要学习嵌入式硬件的知识

浅谈嵌入式软件设计

岁酱吖の 提交于 2019-12-05 05:28:54
[TOC] 浅谈嵌入式软件设计 本文在21IC的公众号文章《多年嵌入式编程工程师经验分享:换个角度来编程》基础上结合自己理解而写,部分图片以及文字说明均来自互联网。 前后台模型 模型介绍 当开发过程中不使用OS时,几乎所有的嵌入式程序归根结底都是一个由无法停止的循环为结构构成的,即常见的 while(1) 或 for(;;) ,用流程图表示就是这样: graph TD stop[结束] start[查询IO或外设状态] --> section1[执行相关业务逻辑] section1 --> conditionA{退出无限循环?} conditionA -- YES --> stop conditionA -- NO --> section1 start_sub[业务逻辑]-->subconditonA{执行业务逻辑A?} subconditonA{执行业务逻辑A?}--YES-->subsection1[子功能A] subconditonA{执行业务逻辑A?}--NO-->subconditonB{执行业务逻辑B?} subconditonB--YES-->subsection2[子功能B] subconditonB--NO-->stop_b[结束] interp[触发中断]-->baoliu[保护现场] baoliu-->interp2[执行中断服务函数] interp2--

嵌入式学习之Linux文件系统、

旧巷老猫 提交于 2019-12-05 05:13:31
Linux 支持多种文件系统,包括 ext2、 ext3、 vfat、 ntfs、 iso9660、 jffs、 romfs和nfs 等,为了对各类文件系统进行统一管理,Linux 引入了虚拟文件系统VFS(Virtual File System) ,为各类文件系统提供一个统一的操作界面和应用编程接口。本文将和大家详细介绍 Linux文件系统 相关知识,一起来看看吧。 Linux 下的文件系统结构如下: Linux 启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。   不同的文件系统类型有不同的特点,因而根据 存储  设备的硬件特性、系统需求等有不同的应用场合。在嵌入式 Linux应用中,主要的 存储  设备为 RAM(DRAM, SDRAM)和ROM( 常采用FLASH 存储器) ,常用的基于存储设备的文件系统类型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。 1. 基于 FLASH的文件系统 Flash  ( 闪存 )作为嵌入式系统的主要存储媒介,有其自身的特性。 Flash  的写入操作只能把对应位置的 1修改为 0 ,而不能把 0 修改为 1( 擦除 Flash