嵌入式软件

嵌入式行业知识结构导航

拈花ヽ惹草 提交于 2019-12-23 09:29:32
第一部分:Linux平台搭建与环境熟悉 了解linux系统;区分各种版本的Linux系统,以便于拓展 Linux视野。 1、Linux 简介; 2、Linux 系统的主要特点; 3、Linux 的组成; 4、主要的 Linux 版本; 5、嵌入式 Linux简介与发展 第二部分:虚拟机安装和LINUX系统安装 1、虚拟机安装; 2、Linux系统的安装; 3、Linux系统的常用软件的安装; 4、Linux快速入门 5、 熟悉运用 Linux环境下,常用命令的操作与系统设置,如常用的 Shell;掌握基本的Shell 应用 第三部分:嵌入式LINUX环境搭建 1、 建立嵌入式 Linux开发环境 2、 熟悉嵌入式开发平台 3、 嵌入式 Linux开发工具 4、 Linux下的调试技巧 5、 MAKE工程管理器 6、 硬件环境的搭建;arm-linux-gcc与 gcc安装配置 第四部分:U-Boot 了解 U-Boot 的作用及工作流程;了解Bootloader 的代码结构、编译过程;移植U-Boot;掌握常用的U-Boot命令。 1、 Bootloader介绍 2、 u-boot工程介绍 3、 u-boot的编译使用 4、 u-boot源码分析 5、 u-boot资源分配 6、 配置编译u-boot 7、 u-boot移植过程 8、 u-boot常用命令操作 9、 添加u

路由器开发

最后都变了- 提交于 2019-12-18 01:28:01
宽 带上网已经不是什么新鲜事情,人们对相关的网络器件已经不再陌生,比如说常见的路由器。对于一般的网络用户,他们能知道怎样使用路由器来上网、玩游戏等就 已经感到很满足了,通常情况下对路由器的深层技术很少去过问研究,但做为兴趣广泛的技术爱好者,对这方面的知识是非常感兴趣的。但限于各种条件的制约,这 些爱好者都非开发者,很大程度上无法深入了解真正的技术实现过程以及相关的核心内幕。正是基于此点,笔者凭借自身的知识沉淀,尽最大努力为爱好技术的读者 架设一坐能通向深层核心的桥梁,为大家揭开路由器的神秘面纱,剖开其核心内脏。为使读者能清晰明白的理解掌握,笔者尽量将专业的技术内容转化为容易接受的 知识讲解,其中可能有不足偏颇之处,还请大家多见谅。 概述 什么是路由器? 互联网是依靠路由器连接起来的,路由器是互联网或者说IP网络的核心设备。宽带接入的不断增长,带动了路由器的需求不断增加。 路由器究竟是什么样的技术产物? 谈到路由器的开发,我们就不免要谈到“嵌入式”设备的开发,没错,通俗的说,路由器就是一种嵌入式产品。那么究竟什么是嵌入式设备呢?    其实就目前而言,嵌入式设备已经不断深入我们的日常生活方方面面。通俗的讲,嵌入式设备是指具有计算机功能,但又不称为计算机的设备或器材,它几乎包括 了我们周围的所有电器设备 PDA、手机、机顶盒、汽车、微波炉、电梯、安全系统、自动售货机、医疗仪器、立体音响

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),都是通用的硬件,我们只管设计软件就变成自己的产品了。

让嵌入式工程师毛骨悚然的掉电丢数据事故可以这样解决!

落花浮王杯 提交于 2019-12-16 11:34:44
Nand-Flash/eMMC(带有Flash控制器的Nand-Flash)作为一种非线性宏单元模式存储器,为固态大容量存储的实现提供了廉价有效的解决方案。Nand-Flash存储器具有容量大,改写速度快等优点,适用于大量数据的存储,因而越来越广泛地应用在如嵌入式产品、智能手机、云端存储资料库等业界各领域。 图1 Nand-Flash与eMMC芯片 存储器件使用寿命 使用了Nand-Flash的主板出现丢数据掉程序现象,是一个让无数工程师毛骨悚然的事故。眼看着程序用着用着就消失了,只能干着急也无法下手。有经验的工程师手起刀落换上一颗新物料,熬夜补代码继续撑过半个项目周期。回头无处发泄还要大刀阔斧换厂商、换品牌。虽说换几片Nand-Flash还能负担得起,但毕竟这是一个无底洞,不如去深入探明问题原因,不然散尽家财也无法弥补亏空。 器件数据手册中通常描述Nand-Flash的块擦写寿命达10万次,EMMC的块擦写最高也会有1万次;同理,EEPROM、SD卡、CF卡、U盘、Flash硬盘等存储介质在都存在写寿命的问题。在文件系统向写数据的底层存储器块写数据时,常规会先将块里的数据读出来,擦除块干净后,将需要写入的数据和之前读出来的块数据一起再回写到存储器里面去,如果文件系统写平衡没有处理好,特别是要求1分钟以内要记录一次数据这样频繁的擦写块操作,就有可能将Nand

作为一个新人,怎样学习嵌入式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-12 11:59:46
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 嵌入式入门:嵌入式领域的职业发展方向是什么? 在如今的IT市场上看,嵌入式的发展的应用都是广受欢迎的,在嵌入式入门学习中,我们可以发现嵌入式的发展方向有很多,门槛高低不一样。下面就由信盈达学院小编为大家介绍: 1.单片机:工控程序(不跑os)--入门容易,无外乎就是掌握汇编和c,能够根据datasheet来写,发展前景一般,也没有太大的技术难度,除非你在算法上面有优势,比如智能车会各种PID,模式识别上会神经网络,优化上会遗传算法等等,但是这些复杂的控制一般就不会裸奔了(除非环境恶劣),肯定是处理器强悍,带os的;硬件制作--就是数字电路,涉及单片机的外设,感觉难度也不高。 2.ARM:软件上就是写底层驱动,这个入门,深入都不容易,需要对硬件及os有较深的了解,发展还是很不错;其操作系统-比较复杂,linux,android等,你看现在很多手机厂商推出的操作系统也就是修改内核,就业还是很容易的;ARM的应用程序方面,就是android开发或者Linux上应用开发(QT等),做的人很多,就业容易待遇也不错,需要掌握c++/java。ARM的硬件方面,就像手机一样在处理器上做整体的电路,比单片机入门难的多,做成技术大牛了不缺钱。 3.FPGA:就是硬件编程,入门很简单,做深很难

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

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

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

狂风中的少年 提交于 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语言来编程、控制这些硬件。这一阶段除了要学习对硬件编程之外,还需要学习嵌入式硬件的知识

嵌入式软件环境构建:uboot、kernel、rootfs、app布局(转载)

瘦欲@ 提交于 2019-12-06 06:26:06
嵌入式开发涉及硬件和软件两部分,个人目前主要是做嵌入式软件部分,使用uboot+linux的整体方案。这里所说的“嵌入式软件环境”,不是指宿主机上的嵌入式开发环境,而是指目标机中的运行软件环境,只是简要介绍一种布局及相应的实现步骤。 一、软件环境的布局 开发板的datasheet中都有详细的地址空间的划分,其中比较重要的两块是:DDR地址空间和Flash地址空间。DDR空间是系统和应用的运行空间,一般由linux系统自身进行使用和管理;Flash空间是系统和应用载体的存放空间,一般需要在使用前进行划分,由应用开发者进行管理。在这里以我现在正在做的项目进行简单的示例和说明。 其中,Flash的整体地址空间为:0x34000000~0x34FFFFFF,共16MB,使用的是Nor Flash芯片。布局需要做的工作是: 确定uboot二进制文件的大小,使用的地址范围 确定linux kernel镜像文件的大小,使用的地址范围 确定rootfs 根文件系统的镜像文件大小,使用的地址范围 估计整体应用方案所需的空间大小,选择可使用的地址范围 完成上述工作后,项目的布局如下: uboot:0x34000000~0x34080000, 512KB kernel : 0x34080000~0x34180000, 1MB, 文件大小为952.8KB rootfs : 0x34180000