- 论坛徽章:
- 0
|
看怎么理解了. 同意Ager, 什么样才是"直接操作硬件"?
说操作硬件一定要通过内核, 这种看法也未免有失偏颇: 内核本身是什么写就的? -- 一部分汇编是需要的, 但是至少90% + 都是C代码.
我写一个程序, 将其编译为二进制文件, 这个程序包含了, 对异常和中断的处理, 自己设定栈起始点(有一点儿汇编夹杂), 设定外设寄存器使之能响应GPIO, 串口, 还包括对CLOCK, DRAM和LCD初始化, 加上MMU设定初始化, 加上WatchDog, 再加上一个网卡收发包的东西, 如此我就建立了基本环境. 简单地说, 如果不考虑那么复杂, 我写的就是一个单进程的操作系统. 你以为我写的这个很复杂吗? -- 信不信我代码扔出来 -- 对, 我有. 我, 我身边的同事, 随时都可以扔给你这样一个“操作系统”.
然后把这个“操作系统”扔到ARM板上(一般叫烧写...),它就运行起来了。我所有的操作都是直接对物理内存进行操作。敢说我不是“直接操作硬件”?设定外设寄存器我也是用的C代码 -- 给个volatile指针,直接往里面写。敢说我不是“直接操作硬件”?
=========================
细节有点小复杂,虽然我上面描述得很简单。比如链接脚本什么的是需要的,对C语言一定程度的深入理解是必须的。由于一般是在ARM平台上构建, 所以ARM的基本汇编是需要的。
|
|