淘客熙熙

主题:基于史老柒兄弟的一个帖子,拿自己身体做的科学实验 -- 帅云霓

共:💬215 🌺386 🌵4
全看树展主题 · 分页首页 上页
/ 15
下页 末页
家园 期待上图,无图无真相
家园 一般人嘴张开的宽度大于高度,灯泡近似圆球,你想想
家园 几份含灯泡的实验报告,和我的结论一致

外链出处

家园 可以借助杜蕾斯的力量
家园 而且,专业人士用嘴尝这些玩意,也是很忌讳的

就算是分析纯的无毒的柠檬酸三钠,也不保证里面就不含有氰化钠。

氰化钠这玩意,几十毫克就能在半小时内把一个80公斤的胖人送上西天。

所以,不允许尝化学药品是有它的道理的。

家园 那是进进出出驱动叫,不是内核叫

机理不一样。

而且,内核是叫不出Oh-Yeah这么senior的内容的。内核叫的都是R-O-O-M这种不成句的。那些Oh-Yeah的一定是上层APP在起作用。

所以,如果你碰到控制台不断输出Oh-Yeah的情形,说明还没有真正进内核Ring0,不过也差不多了,应该是在Ring1执行。

家园 还真是这样的,您的理解更深刻
家园 呵呵,当然这和处理器体系架构也有关系

对于x86,内核跟驱动特权级还是有区别的,一个是ring0,一个是ring1。。

但在MIPS体系结构下,内核和驱动都是在kernel模式下,在kernel unmapped cached段,也就是0x80000000到0x9FFFFFFF的kseg0区间。只有bootloader要放在0xA0000000到0xBFFFFFFF的kseg1。

因此,对于MIPS,内核与驱动就只有逻辑上的划分了。

更有甚者,ARM7TDMI这样的no MMU处理器,APP/Driver/kernel看到的4GB空间是完全一样的。在这种系统下,folk其实就等同于vfolk,当然也是很不安全的了。

家园 还是成立的。ARM如果没有MMU的话,是跑不了标准内核的

只能跑rt-linux之类的改造内核,有说2.6以后的内核吸收了这些无mmu的代码,增加了配置选项,但毕竟还不是标准通用内核。

实际上ARM9以上的处理器,基本都配备了MMU,在这些情况下,您说的完全是对的,oh-yeah是在用户空间叫的。

花谢!

家园 经验不够了,花先欠着
家园 对,ARM7TDMI只能跑ucLinux

至于rtlinux实际上是linux的一个进程(process),里面实时调度任务的单位是线程(thread),有点像vxWorks。各个线程看到的4GB空间,是一样的。

我做过一段时间rtlinux下的debug,对线程之间踩内存的公然践踏国际法的行为深恶痛绝,表示密切关注,强烈谴责和极大愤慨,希望它们悬崖勒马,勿谓言之不预也,可惜这些线程还是不听话。

家园 又欠你一朵花啦

所以没有MMU的处理器只能用在小规模嵌入应用上,否则工程大了以后,指针造成的内存问题,线程的同步问题等等,自己就把自己压垮啦。

内存问题倒是可以用工具来测试,一般可以把核心部分在PC上编写并测好了再放到板子上跑。

家园 这么干会有endianess问题

内存问题倒是可以用工具来测试,一般可以把核心部分在PC上编写并测好了再放到板子上跑。

如果您用过DOS下的PCTools改游戏存档,您一定知道,将数字(如钱数、HP等)换算成十六进制以后,要把字节次序倒过来。这是因为,PC,也就是x86处理器,它的字节序,跟主流嵌入式处理器,ARM,Power和MIPS这样的处理器,正好是相反的。

对于驱动程序而言这一点太重要了,因为IO寄存器操作,往往是以字节甚至bit为单位的。网络协议的实现也有这个问题。PC上的0x12345678UL,在内存里是0x78 0x56 0x34 0x12,而ARM上是0x12 0x34 0x56 0x78。

家园 哈哈,设置编译器啊

大小端的问题在IDE硬盘接口上也同样存在。

用C的话,编译器可以设置大小端,

真需要倒字节序,可以写个宏,PC上编译一个配置,交叉编译一个配置。

而且ARM处理器硬件上是大小端都支持的。

总之能在PC上调的,就不上板调。

家园 这个在软件工程上有个专门的名词,单元测试

很枯燥。

对于不听话的新手罚写单元测试用例,实在不听话的,女的发配富士康,男的发配山木培训。

全看树展主题 · 分页首页 上页
/ 15
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河