基于操作系统编程与裸机编程的区别
因为学的是控制,刚开始的时候玩的单片机比较多,单片机进行开发的一个重要的特点就是裸机编程。也就是说内核跑的完完全全是你的代码。但是在操作系统上编程就完全不一样,因为你的程序大部分都在调用操作系统的接口函数,从而间接的管理硬件。操作系统搭好了框架,实现硬件抽象,文件存储管理,进程管理,本质上就是对cpu,i/o和存储器搭了一个管理框架,这种间接的管理方式使我刚接触ROS开发时产生了极大的不适应,我不知道我应该写什么,不知道函数和硬件之间的关系。就是当时很难理解接口的概念,总是在纠结底层。
基于操作系统编程理解的第二个难点我觉得是进程,像我们写的应用程序,以windows举例,exe文件并非直接读取执行,而是有一个映射到进程管理空间的过程,windows是由PE装载器完成。
整个过程我觉得可以分为五步,第一步是通过屏幕鼠标网络,u盘等I/O口将源码写入硬盘,第二部是进行编译,第三步是创建进程,第四步是进行映射,也就是映射到进程空间,第五步调用链接库时进行链接
暂时先写这么多,有时间再补充,欢迎讨论。
21年7.15更新
上班一周了,做的偏上层,自动驾驶的规划算法。因此被迫升级自己的C++能力,同时代码也是基于linux系统的。这两天又有了一些新的理解。
废话不多说。
人类科技水平发展的过程从另一个角度来看是偷懒的过程,有偷懒的需要,也就有了进步,编程语言也是这么发展的,汇编是针对硬件的语言,是机器语言直接对应过来的,与硬件的关联有个非常重要的问题就是程序不具备移植性,硬件变了代码也就变了。因此,c语言就出现了,目的就是减少与硬件过程的管理性,但是有可以对硬件进行操作,比如说可以管理内存,但是是一种统一的操作方式。
操作系统也是如此的目的,是对硬件的抽象,因此你就无须直接操作硬件,因此当你需要操作硬件时,你的思维就应该转变了,不是去找相应的寄存器,而是去找相应的接口函数也就是API,即使不同操作系统的API存在差异,但是都会存在。
这里随便插点题外话,c++相比其它语言对硬件又更加关注,对底层运行的控制更加精准,注重的是效率。
基于操作系统编程与裸机编程的区别相关推荐
- 应用编程与裸机编程、驱动编程的区别(Linux应用编程篇)
用嵌入式Linux硬件平台下的软件开发来说,我们大可将编程分为三种,分别为裸机编程.Linux驱动编程以及 Linux应用编程. 裸机编程: 一般把没有操作系统支持的编程环境称为裸机编程环境,譬如单片 ...
- ARM2440触摸屏编程(裸机编程)
俗话说:合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下.只有基础扎实了,做事情才能更得心应手.对于编程也是一样的,只有对各个器件的工作原理摸得一清二楚,才能高效地写出好代码.所以学习驱动和 ...
- MCU裸机编程的状态机框架--第一部分
MCU裸机编程的状态机框架--第一部分 1 状态机的概念 1.1 状态机的要素 1.2 状态迁移表 1.3 状态机思路实现一个时钟程序 1.4 状态机应用的注意事项 1.5 更复杂的状态机 2 单片机 ...
- BSP板机支持包、linux启动分析、ARM裸机编程
文章目录 一.BSP 二.驱动 驱动的基本要素 三.启动分析 1.uboot 2.uboot的作用 3.uboot相关命令 关键的内容: 1)bootargs,启动参数 2)启动命令 3)修改启动延时 ...
- 07 树莓派裸机编程,并在Windows MSYS2 QEMU模拟器中运行
作者 将狼才鲸 创建日期 2022-11-14 Gitee源码和工程地址:才鲸嵌入式 / 开源安防摄像机(嵌入式软件) CSDN文章地址:项目介绍:开源安防摄像机(嵌入式软件) 4)完整的环境安装步骤 ...
- 基于标准库函数与基于HAL库函数的stm32编程方式对比
基于标准库函数与基于HAL库函数的stm32编程方式对比 一.标准库函数 二.HAL库函数 三.差异 四.stdunio IDE试玩 参考资料 一.标准库函数 1.标准库的解释 标准外设库(Stand ...
- SQL Servr 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性
友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Ma ...
- SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性
友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Ma ...
- 机器人编程与python语言的区别_儿童编程和机器人编程有啥区别?
这是最全面的回答!一篇文章让你彻底了解少儿编程和机器人编程的区别! 虽然都带有"编程"二字,但少儿编程和机器人编程还是有本质区别的,有哪些不一样呢? 偷懒的家长可以直接看下面这张表 ...
- 机器人编程与python语言的区别_一分钟看懂“机器人编程”和“少儿编程”的区别!...
随着编程学习全球化的趋势,国内编程学习热潮日盛,越来越多的家长开始让孩子接触学习编程. 然而在挑选学习课程的过程中,机器人编程和少儿编程是最让家长头疼的问题之一. 因为两者的名称都有"编程& ...
最新文章
- 优秀开发者必备技能包:Python调试器
- 使用XML记录数据的一些体会
- [LeetCode]--38. Count and Say
- flutter 调用原生安卓插件_Flutter 如何调用Android和iOS原生代码-阿里云开发者社区...
- mysql创建新用户并分配数据库权限
- linux函数没有返回值导致溢出,Shell中函数返回值超出问题
- python回归模型 变量筛选_如何进行高维变量筛选和特征选择(一)?Lasso回归
- Git pull 错误:fatal: refusing to merge unrelated histories解决办法
- ArcGIS Server9.3+ArcGIS Desktop9.3破解安装(for microsoft .net)
- jq的链式调用.end();
- 走台阶一共有多少种走法
- git tag打标签常用命令
- python arp 网关_python arp欺骗伪造网关代码
- 深度学习推荐系统--协同过滤推荐算法+实现代码
- 神仙打架!传言阿里 P10 赵海平被 P11 多隆判定 3.25 离职,如何评价阿里 P10 赵海平对王垠的面试?...
- 聚合支付第三方支付通道
- 一个无需软件加密文件夹的bat(批处理)文件的分析
- 你是否有疑问,软件是如何驱动硬件,代码又是如何对计算机进行控制的呢?
- spring中使用Aspectj进行切面编程
- 【单词】计算机常用1700单词