IO控制器程序

xuhaoee 2018-02-06 01:36:40
在《现代操作系统》中看到,IO设备一般包括两个部分:设备控制器和设备本身;某些控制器中经常安装一个小的嵌入式计算机,该嵌入式计算机运行为执行IO设备工作而专门编好的程序。

据此向大家请教三个问题:
1. 给控制器编写的程序,称为什么?firmware(固件)?
2. 给控制器编写的程序,其二进制代码存放在什么地方?这段代码如何被加载到内存中?
3. 控制器中有一个小的CPU,它要执行程序,应该也要使用内存,是使用系统内存还是控制器自己有单独的内存?
...全文
731 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Acuity. 2018-02-07
  • 打赏
  • 举报
回复
1、称为固件; 2、二进制代码都是放在flash中,有些处理器集成flash,有些处理器没有集成flash就需要外挂flash或者sd卡/emmc等存储介质;flash有两种,分别是nor和nand,nor可以直接执行代码,nand不能,需加载带内存中执行;情况一:代码放在nand上,此时nor存储一段BootLoader程序,启动的时候,BootLoader程序将存储在nand的代码搬到内存中执行;情况二:代码放在nor上,直接执行; 3、一般都是mcu(单片机)吧?单片机集成了内存、flash;也可以外挂内存和flash。
引用 3 楼 xuhaoee 的回复:
[quote=引用 1 楼 qq_20553613 的回复:] 1、称为固件; 2、二进制代码都是放在flash中,有些处理器集成flash,有些处理器没有集成flash就需要外挂flash或者sd卡/emmc等存储介质;flash有两种,分别是nor和nand,nor可以直接执行代码,nand不能,需加载带内存中执行;情况一:代码放在nand上,此时nor存储一段BootLoader程序,启动的时候,BootLoader程序将存储在nand的代码搬到内存中执行;情况二:代码放在nor上,直接执行; 3、一般都是mcu(单片机)吧?单片机集成了内存、flash;也可以外挂内存和flash。
引用 1 楼 qq_20553613 的回复:
1、称为固件; 2、二进制代码都是放在flash中,有些处理器集成flash,有些处理器没有集成flash就需要外挂flash或者sd卡/emmc等存储介质;flash有两种,分别是nor和nand,nor可以直接执行代码,nand不能,需加载带内存中执行;情况一:代码放在nand上,此时nor存储一段BootLoader程序,启动的时候,BootLoader程序将存储在nand的代码搬到内存中执行;情况二:代码放在nor上,直接执行; 3、一般都是mcu(单片机)吧?单片机集成了内存、flash;也可以外挂内存和flash。
非常感谢你的解答,豁然开朗,谢谢,再请教两个问题: 1. 你所谓“BootLoader程序将存储在nand的代码搬到内存中执行”,这里说的内存就是nor flash是吧? 2. 既然最终都要用到nor flash来运行固件程序,为什么还要弄个难道nand来存储呢?[/quote] 答: 1、这里的内存是指RAM,比如电脑上的ddr3; 2、这里涉及到nor和nand的问题,建议百度下关键字,有很多通俗的解析;总结起来就是nor一般是小容量(存固件),nand可以大容量(存数据),比如现在的emmc、固态硬盘都是nand。
xuhaoee 2018-02-07
  • 打赏
  • 举报
回复
引用 1 楼 qq_20553613 的回复:
1、称为固件; 2、二进制代码都是放在flash中,有些处理器集成flash,有些处理器没有集成flash就需要外挂flash或者sd卡/emmc等存储介质;flash有两种,分别是nor和nand,nor可以直接执行代码,nand不能,需加载带内存中执行;情况一:代码放在nand上,此时nor存储一段BootLoader程序,启动的时候,BootLoader程序将存储在nand的代码搬到内存中执行;情况二:代码放在nor上,直接执行; 3、一般都是mcu(单片机)吧?单片机集成了内存、flash;也可以外挂内存和flash。
引用 1 楼 qq_20553613 的回复:
1、称为固件; 2、二进制代码都是放在flash中,有些处理器集成flash,有些处理器没有集成flash就需要外挂flash或者sd卡/emmc等存储介质;flash有两种,分别是nor和nand,nor可以直接执行代码,nand不能,需加载带内存中执行;情况一:代码放在nand上,此时nor存储一段BootLoader程序,启动的时候,BootLoader程序将存储在nand的代码搬到内存中执行;情况二:代码放在nor上,直接执行; 3、一般都是mcu(单片机)吧?单片机集成了内存、flash;也可以外挂内存和flash。
非常感谢你的解答,豁然开朗,谢谢,再请教两个问题: 1. 你所谓“BootLoader程序将存储在nand的代码搬到内存中执行”,这里说的内存就是nor flash是吧? 2. 既然最终都要用到nor flash来运行固件程序,为什么还要弄个难道nand来存储呢?
of123 2018-02-07
  • 打赏
  • 举报
回复
这些控制器很多都是 ASIC,内部代码全部或大部是固化的,存储模块也未必是 Flash,很多用 ROM。
Acuity. 2018-02-06
  • 打赏
  • 举报
回复
1、称为固件; 2、二进制代码都是放在flash中,有些处理器集成flash,有些处理器没有集成flash就需要外挂flash或者sd卡/emmc等存储介质;flash有两种,分别是nor和nand,nor可以直接执行代码,nand不能,需加载带内存中执行;情况一:代码放在nand上,此时nor存储一段BootLoader程序,启动的时候,BootLoader程序将存储在nand的代码搬到内存中执行;情况二:代码放在nor上,直接执行; 3、一般都是mcu(单片机)吧?单片机集成了内存、flash;也可以外挂内存和flash。

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧