嵌入式Linux软件设计学习过程:

  1. 熟悉C语言和基本程序设计方法; (C程序设计、数据结构、操作系统原理)
  2. 了解基本软硬件调试方法; (微机原理实验或单片机实验)
  3. 熟练掌握搜索相关网络资源的技巧;
  4. 熟悉UNIX/Linux操作系统的基本操作
    因为本人是小白。所以希望可以大家指正错误及时改进。
    一:嵌入式系统概述:

什么是嵌入式系统?以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗 严格要求的专用计算机系统。(这里的可裁剪的意思是本人理解为就是像手机,智能手环,LOT产品等这种嵌入式产品,可以在硬件平台和软件平台由开发者自行决定。)
嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序四个部分组成,用于实现对其他设备的控制、监视或管理等目标。
嵌入式系统的架构:


典型的嵌入式系统基本硬件组成:

嵌入式系统未来的发展趋势?
嵌入式应用软件的开发需要强大的开发工具和操作系统的支持
• 采用实时多任务编程技术交叉开发工具来实现复杂的控制功能
• 简化应用程序设计,保障软件质量和缩短开发周期
联网成为必然趋势
实现小尺寸微功耗底成本
提供精巧的多媒体人机界面

嵌入式系统软件开发:

1.与普通软件开发的区别:
• 是否需要操作系统一般采用Linux系统配套下的开发工具和开发平台。
• 程序编译和程序执行是在两个平台
存在host端和target端,需要交叉编译
• 输入/输出的界面不同 • 可利用的资源非常有限
• 常常要和硬件打交道
2. 嵌入式系统设计的一般流程:

3.嵌入式软件开发的一般流程:

BSP开发:https://blog.csdn.net/ibelieve1974/article/details/72235579
在其他博主的CSDN里找到比较详细的解释;BSP是板级支持包,(board support package)是介于主板硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统BSP的定义形式来写(BSP的编程过程大多数是在某一个成型的BSP模板上进行修改),这样才能与上层OS保持正确的接口,良好的支持上层OS…。
4.嵌入式系统软件的开发环境:
嵌入式系统的一个特点在于其开发的特殊性与困难性。
• 开发机器 != 执行机器
• 开发环境 != 执行环境
专门的开发环境与开发工具
Linux系统配套的gcc,gdb等开发工具
-VxWorks系统配套的Tornado集成开发工具
这里因为不太了解VxWorks系统配套的Tornado集成开发工具,查找资料:
风河公司已经在Tornado平台基础上开发推出了workbench开发平台,采用新的Eclipse软件框架结构,易于系统的拓展。 Tornado开发环境包括三个部分:1.运行在宿主机以及目标机上的强有力的交叉开发工具及应用程序;例如:GNU,Diab编译器,文本编译器,各种调试工具,VxSim模拟器等;2.运行在目标机上的高性能,可裁剪的实时操作系统VxWorks; 3.连接宿主机以及目标机的各种通讯方式:如以太网,串口,JTAG等。
5.大型连接式开发环境:

6.嵌入式系统开发以及软件开发工具:
1.嵌入式系统开发工具:
• 编译器 • 链接器• 定址器• 软件仿真 • 调试工具
• 硬件调试器 ICE(In-Circuit Emulator) ICD(In-Circuit Debugger)
• 集成开发环境(IDE)
2. 常见嵌入式软件开发工具:
典型的商业开发工具及供应商
• ARM公司的SDT、ADS和Realview
• Windriver公司的Tornado for VxWorks
• MontaVisa公司的HardHat Linux
• Microsoft公司的Platform Builder和eMbedded Visual C++
免费开发工具
• GNU系列开发工具 (从源代码开始 ;已编译好的二进制工具)
• Wiggler调试器

嵌入式操作系统

  1. 嵌入式操作系统的组成:
  2. 嵌入式操作系统的分类:
    • 多任务操作系统 并行性、调度性和无序性
    • 分时操作系统 并行性、独立性、交互性和及时性
    • 实时操作系统(IEEE实时UNIX分委会的定义)
    异步事件响应;切换时间和中断延迟时间确定;抢占式调度;内存锁定;优先级中断和调度 ;连续文件;同步
    3.对实时系统的一些误解:嵌入式系统经常就是实时性系统—其实很多嵌入式系统并不需要实时性;
    实时系统处理速度很快—其实实时性是一个相对概念;
    4… 实时系统的特点:
    • 在实时系统中,系统的正确性不仅仅依赖于 计算的逻辑结果而且依赖于结果产生的时间
    • 实时操作系统必须在指定的时间内对外部或 内部的事件进行响应和处理
    • 需要高效的中断处理能力来处理异步事件和高效的I/O能力来处理有严格时间限制的数 据收发应用
    5… 实时操作系统的基本功能:
    • 任务管理 (多任务和基于优先级的任务调度)
    • 任务间同步和通信 (信号量和共享内存等)
    • 存储器优化管理(含ROM的管理) • 中断管理服务
    注:什么是信号量?为了避免多个线程同时读写同一个数据而产生不可预料的后果,所以要将各个线程对一个数据的访问同步。信号量相当于一种锁,一个初始值为N的信号量允许N个线程并发访问。
    操作如下: 将信号量的值减1;
    如果信号量的值小于0,则进入等待状态,否则继续执行。访问完资源之后,线程释放信号量,进行如下操作;
    将信号量的值加1;
    如果信号量的值小于1,唤醒一个等待中的线程。
    6… 典型的嵌入式操作系统:
    • 嵌入式Linux
    • VxWorks
    • Windows CE
    • Palm OS
    • Symbian OS
    • μC/OS-II

GNU/Linux操作系统:

GNU代表GNU’s Not Unix。它既是一个操作系统,也是一种规范。
传统意义上的Linux是一个内核,然而一个完整的操作系统不仅仅是内核而已。
Linux是一套免费使用和自由传播的类Unix操作系统。我们通常所说的Linux,指的是GNU/Linux,即采用Linux内核的 GNU操作系统。

  1. GNU/Linux操作系统的版本:
    • Linux最早是Linus Torvalds于1991年在芬兰 赫尔辛基大学原创开发的,并在GNU的GPL (General Public License)原则下发行。
    • Linux的版本号又分为两部分:内核(Kernel) 版本和发行(Distribution)版本。内核版本 的序号由3部分数字构成,其形式如下: major.minor.patchlevel 如2.4.18
    Linux系统常见的自由发行版本:

    在这里因为本人使用Ubuntu版本所以简略介绍Ubuntu:
    Debian最早由Ian Murdock于1993年创建。可以算是迄今为止,最遵循GNU规范Linux系统。
    Debian是Linux发行版当中比较自由的一种,由位于世界各地上千名的自愿者不断开发和维护。它不属于任何的商业公司,完全由开源社区所有。Debian GNU/Linux不单是个操作系统,它也包含多过15490个软件包,它们是一些 经已编译的软件,并包装成一个容易安装的格式。dpkg是 Debian系列特有的软件包管理工具,它被誉为所有Linux 软件包管理工具(比如RPM)最强大的!配合apt-get,在 Debian上安装、升级、删除和管理软件变得异常容易。
    Ubuntu是一个南非的民族观念,着眼于人们之间的忠诚和联系。该词来自于祖鲁语和科萨语。 Ubuntu精神的大意是“人道待人”(对他人仁慈)。另一种翻译可以是:“天下共享的信念, 连接起每个人”。 Ubuntu项目完全遵从开源软件开发的原则;并且鼓励人们使用、 完善并传播开源软件。也就是说Ubuntu目前是并将永远是免费的。Ubuntu是基于Debian之上,旨在创建一个可以为桌面和服务器提供一个最新且一贯的Linux系统。Ubuntu囊括了大量精挑细选自Debian发行版的软件包,同时保留了Debian强大的软 件包管理系统,以便简易的安装或彻底的删除程序。与大多数 发行版附带数量巨大的可用可不用的软件不同,Ubuntu的软件包清单只包含那些高质量的重要应用程序。
    2… Linux的特点:
    多任务、多用户 支持多种文件系统
    采用虚拟内存管理技术
    良好的可移植性
    设备独立性
    丰富的网络功能
    提供全部源代码
    3… Linux的功能:
    稳定的核心
    丰富的应用软件
    X Window系统(仿Windows系统在Linux下的软件窗口系统,图形化界面)
    多重启动
    网络功能
    软件开发工具
    4… Linux内核体系结构:
    与UNIX系统相似,Linux系统大致可分为3层: 靠近硬件的底层是内核,即Linux操作系统的 常驻内存部分;中间层是内核之外的Shell层,亦即操作系统的系统程序部分;最高层是应用层,即用户程序部分,包括各种文本处理程序、语言编译程序及游戏程序等。Linux的系统结构如图所示。

    5.嵌入式Linux的优势:
    • Linux系统是层次结构且内核完全开放 • 强大的网络支持功能
    • Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且 可以跨越嵌入式系统开发中仿真工具的障碍
    • Linux具有广泛的硬件支持特性

Linux程序设计基础

  1. 编辑器vi的使用:自行看文档:
    举例::set number 设置显示行号;h(向右),j(向下),k(向上),l(向左)移动光标;
    2.GNU cc的使用

    在终端键入gcc-v,可以看到正在使用的gcc版本,还可以确定系统支持ELF还是a.out文件格式;

    可以看到我的gcc版本是7.4.0;Gcc的使用格式如下:• $ gcc [options][filenames] • 其中filenames为所要编译的程序源文件。 • 当使用gcc时,gcc会完成预处理、编译、 汇编和连接。前三步分别生成目标文件,连接时,把生成的目标文件链接成可执行文件。 gcc可以针对支持不同的源程序文件进行不同处理,文件格式以文件的后缀来识别。

笔记——嵌入式软件开发学习(一)相关推荐

  1. 嵌入式软件开发学习 工程师要掌握的基本技能

    嵌入式软件开发到底是什么一个概念,总会有人觉得它是一个很深奥的一个课程,它是否是比软件研发更加有发展的趋势呢?嵌入式的开发总的来说是一个整合能力的,需要学习者有一定的知识逻辑水平.由于嵌入式系统是一个 ...

  2. 一个普通大学生的嵌入式软件开发学习之路

    1.学习c语言. 了解点c++会加深理解,有的公司笔试也会出c++的题 2.学习单片机. 学校里可能都是c51,但是自己还是得要学习stm32的(有的学校可能有学习32的板子,正点原子,或者野火的), ...

  3. 该不该放弃嵌入式,单片机这条路?(答主梦人亦冷:我与嵌入式软件开发爱恨交织7年)

    转载自知乎大佬 梦人亦冷的回答,问题:该不该放弃嵌入式,单片机这条路? 原文链接:https://www.zhihu.com/question/370606355/answer/1865920389 ...

  4. ios开发学习笔记--Core Motion

    iOS开发学习笔记之CoreMotion-运动传感器 官网文档:CoreMotion Framework Reference 一.     简介 现在的苹果手机都基本有运动传感器,能够过获取到设备的加 ...

  5. 高性能Cordova App开发学习笔记

    高性能Cordova App开发学习笔记 文件结构 添加插件 构建准备 各个www的作用,prepare命令会将hello\www的内容会拷贝到platform下的wwww目录,知道该改哪里了吧?如果 ...

  6. Windows驱动开发学习笔记(七)—— 多核同步内核重载

    Windows驱动开发学习笔记(七)-- 多核同步 基础知识 并发与同步 分析 InterlockedIncrement 原子操作相关API 内核文件 多核同步 临界区 示例一:错误的临界区 示例二: ...

  7. Windows驱动开发学习笔记(六)—— Inline HOOK

    Windows驱动开发学习笔记(六)-- Inline HOOK SSDT HOOK Inline Hook 挂钩 执行流程 脱钩 实验一:3环 Inline Hook 实验二:0环 Inline H ...

  8. Windows驱动开发学习笔记(五)—— SSDT HOOK

    Windows驱动开发学习笔记(五)-- SSDT HOOK 系统服务表 系统服务描述符表 实验一:通过代码获取SSDT表地址 通过页表基址修改页属性 方法1:修改页属性 方法2:修改CR0寄存器 实 ...

  9. Windows驱动开发学习笔记(四)—— 3环与0环通信(常规方式)

    Windows驱动开发学习笔记(四)-- 3环与0环通信(常规方式) 设备对象 创建设备对象 设置数据交互方式 创建符号链接 IRP与派遣函数 IRP的类型 其它类型的IRP 派遣函数 派遣函数注册位 ...

最新文章

  1. Java中类、常量、变量、方法名等命名规则
  2. mysql的trim动态标签_Mybatis之trim标签的理解
  3. 【最新版】Win10 Java jdk14.0.2安装及环境变量配置
  4. 如何检测如果滚动条是否可见控件上
  5. linux 修改 java 内存_Linux 和 Windows修改Java虚拟机内存大小
  6. chrome扩展之3:一步步跟我学开发一个表单填写扩展
  7. 7 Managing Users and Securing the Database
  8. Kettle组件Spoon的使用
  9. 计算机系统基础学习报告(一)
  10. 一个人、一瓶酒、半斤肉饼、两杯饮料
  11. 乔家大院的5A牌子被摘了,但且别急着叫好
  12. OpenGL FBO学习
  13. IIS WEB进程中执行Dos命令失败的问题排查
  14. leetcode每日一题 911在线选举
  15. 吕泉高维智慧创始人:17年心灵修行与素食·造就冻龄女神
  16. 华为起诉三星启示几何 探讨知识产权在中国
  17. nohup java_解析nohup java -jar xxx
  18. 2017计算机考证结果
  19. 360安全卫士的云查杀原理介绍[转]
  20. 源中瑞能源在线监测系统帮助企业降低能源损耗

热门文章

  1. 基于微信小程序的校园二手物品交易平台的设计与实现
  2. 蓝牙学习五(广播包分析wireshark)
  3. PTA 计算年龄问题 (30 分)
  4. 蓝噪声取样(Blue noise sampling) 相关知识
  5. 浅谈人行二代征信对接申请及接入验收流程
  6. 2022年了,你还没搞清楚箭头函数与普通函数的区别嘛?
  7. ExecuteScaler的三种返回值
  8. PhpStudy修改数据库root的密码
  9. 怎么快速的访问化学绘图软件文件
  10. Alpha-Beta 剪枝