因为学的是控制,刚开始的时候玩的单片机比较多,单片机进行开发的一个重要的特点就是裸机编程。也就是说内核跑的完完全全是你的代码。但是在操作系统上编程就完全不一样,因为你的程序大部分都在调用操作系统的接口函数,从而间接的管理硬件。操作系统搭好了框架,实现硬件抽象,文件存储管理,进程管理,本质上就是对cpu,i/o和存储器搭了一个管理框架,这种间接的管理方式使我刚接触ROS开发时产生了极大的不适应,我不知道我应该写什么,不知道函数和硬件之间的关系。就是当时很难理解接口的概念,总是在纠结底层。

基于操作系统编程理解的第二个难点我觉得是进程,像我们写的应用程序,以windows举例,exe文件并非直接读取执行,而是有一个映射到进程管理空间的过程,windows是由PE装载器完成。

整个过程我觉得可以分为五步,第一步是通过屏幕鼠标网络,u盘等I/O口将源码写入硬盘,第二部是进行编译,第三步是创建进程,第四步是进行映射,也就是映射到进程空间,第五步调用链接库时进行链接

暂时先写这么多,有时间再补充,欢迎讨论。

21年7.15更新

上班一周了,做的偏上层,自动驾驶的规划算法。因此被迫升级自己的C++能力,同时代码也是基于linux系统的。这两天又有了一些新的理解。

废话不多说。

人类科技水平发展的过程从另一个角度来看是偷懒的过程,有偷懒的需要,也就有了进步,编程语言也是这么发展的,汇编是针对硬件的语言,是机器语言直接对应过来的,与硬件的关联有个非常重要的问题就是程序不具备移植性,硬件变了代码也就变了。因此,c语言就出现了,目的就是减少与硬件过程的管理性,但是有可以对硬件进行操作,比如说可以管理内存,但是是一种统一的操作方式。

操作系统也是如此的目的,是对硬件的抽象,因此你就无须直接操作硬件,因此当你需要操作硬件时,你的思维就应该转变了,不是去找相应的寄存器,而是去找相应的接口函数也就是API,即使不同操作系统的API存在差异,但是都会存在。

这里随便插点题外话,c++相比其它语言对硬件又更加关注,对底层运行的控制更加精准,注重的是效率。

基于操作系统编程与裸机编程的区别相关推荐

  1. 应用编程与裸机编程、驱动编程的区别(Linux应用编程篇)

    用嵌入式Linux硬件平台下的软件开发来说,我们大可将编程分为三种,分别为裸机编程.Linux驱动编程以及 Linux应用编程. 裸机编程: 一般把没有操作系统支持的编程环境称为裸机编程环境,譬如单片 ...

  2. ARM2440触摸屏编程(裸机编程)

    俗话说:合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下.只有基础扎实了,做事情才能更得心应手.对于编程也是一样的,只有对各个器件的工作原理摸得一清二楚,才能高效地写出好代码.所以学习驱动和 ...

  3. MCU裸机编程的状态机框架--第一部分

    MCU裸机编程的状态机框架--第一部分 1 状态机的概念 1.1 状态机的要素 1.2 状态迁移表 1.3 状态机思路实现一个时钟程序 1.4 状态机应用的注意事项 1.5 更复杂的状态机 2 单片机 ...

  4. BSP板机支持包、linux启动分析、ARM裸机编程

    文章目录 一.BSP 二.驱动 驱动的基本要素 三.启动分析 1.uboot 2.uboot的作用 3.uboot相关命令 关键的内容: 1)bootargs,启动参数 2)启动命令 3)修改启动延时 ...

  5. 07 树莓派裸机编程,并在Windows MSYS2 QEMU模拟器中运行

    作者 将狼才鲸 创建日期 2022-11-14 Gitee源码和工程地址:才鲸嵌入式 / 开源安防摄像机(嵌入式软件) CSDN文章地址:项目介绍:开源安防摄像机(嵌入式软件) 4)完整的环境安装步骤 ...

  6. 基于标准库函数与基于HAL库函数的stm32编程方式对比

    基于标准库函数与基于HAL库函数的stm32编程方式对比 一.标准库函数 二.HAL库函数 三.差异 四.stdunio IDE试玩 参考资料 一.标准库函数 1.标准库的解释 标准外设库(Stand ...

  7. SQL Servr 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性

    友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Ma ...

  8. SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性

    友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Ma ...

  9. 机器人编程与python语言的区别_儿童编程和机器人编程有啥区别?

    这是最全面的回答!一篇文章让你彻底了解少儿编程和机器人编程的区别! 虽然都带有"编程"二字,但少儿编程和机器人编程还是有本质区别的,有哪些不一样呢? 偷懒的家长可以直接看下面这张表 ...

  10. 机器人编程与python语言的区别_一分钟看懂“机器人编程”和“少儿编程”的区别!...

    随着编程学习全球化的趋势,国内编程学习热潮日盛,越来越多的家长开始让孩子接触学习编程. 然而在挑选学习课程的过程中,机器人编程和少儿编程是最让家长头疼的问题之一. 因为两者的名称都有"编程& ...

最新文章

  1. 优秀开发者必备技能包:Python调试器
  2. 使用XML记录数据的一些体会
  3. [LeetCode]--38. Count and Say
  4. flutter 调用原生安卓插件_Flutter 如何调用Android和iOS原生代码-阿里云开发者社区...
  5. mysql创建新用户并分配数据库权限
  6. linux函数没有返回值导致溢出,Shell中函数返回值超出问题
  7. python回归模型 变量筛选_如何进行高维变量筛选和特征选择(一)?Lasso回归
  8. Git pull 错误:fatal: refusing to merge unrelated histories解决办法
  9. ArcGIS Server9.3+ArcGIS Desktop9.3破解安装(for microsoft .net)
  10. jq的链式调用.end();
  11. 走台阶一共有多少种走法
  12. git tag打标签常用命令
  13. python arp 网关_python arp欺骗伪造网关代码
  14. 深度学习推荐系统--协同过滤推荐算法+实现代码
  15. 神仙打架!传言阿里 P10 赵海平被 P11 多隆判定 3.25 离职,如何评价阿里 P10 赵海平对王垠的面试?...
  16. 聚合支付第三方支付通道
  17. 一个无需软件加密文件夹的bat(批处理)文件的分析
  18. 你是否有疑问,软件是如何驱动硬件,代码又是如何对计算机进行控制的呢?
  19. spring中使用Aspectj进行切面编程
  20. 【单词】计算机常用1700单词

热门文章

  1. TextWatcher接口
  2. FX系列PLC编程手册
  3. 科大学长对数学系学弟学妹的忠告
  4. oracle数据库服务器名称修改,oracle数据库服务器名称修改
  5. python网管系统_Python学员作品-网吧管理系统
  6. linux驱动加载 动态加载 静态加载 自动加载
  7. 2017计算机驱动用什么好处,驱动精灵和驱动人生哪个好2017
  8. Adodb CS3(DW、FW、PS、FLASH)安装序列号
  9. Docker---DockerFile搭建的最简单的jsp应用
  10. 用asp如何开发wap push(转)