1.《1.1.12.CPU的设计原理、数据总线和地址总线》中,讲到总线分为数据总线和地址总线。有同学反馈说书上写的是“总线分为数据总线、地址总线、命令总线”。这个问题书的是对的,确实有三种总线,书上写的是很全面的。我在课件中并未提到命令总线,是为了突出数据总线和地址总线,因为我们当时讲的主题只用到这两个。感谢同学向我反馈这个问题,希望没有误导大家,在此也要鼓励大家用批判审视的态度去学习,去质疑,去追寻真理。 2.《1.2.4.统一编址&独立编址&哈佛结构&冯诺依曼结构》一节中,第4页PPT(内存的访问方式)中写道“内存通过CPU的数据总线来寻址定位,然后通过CPU数据总线来读写。” 实际应该是内存通过CPU的地址总线来寻址定位,然后通过CPU数据总线来读写。请大家原谅我的疏忽···年龄大了,稍微晚点大脑就不好用了······ 3.《1.2.13.ARM的37个寄存器详解》一节中,随堂笔记中写道“对r14这个名字来说,在ARM中共有6个名叫r14(又叫sp)的寄存器,但是在每种特定处理器模式下,只有一个r14是当前可见的,其他的r14必须切换到他的对应模式下才能看到。这种设计叫影子寄存器(banked register)”。正确的应该是:r14对应的应该是lr,而不是sp(sp是r13) 4、《1.6.8.C语言实现时钟设置代码详解1》一节中,C语言代码中将rREG_CLK_SRC0 = 0x0000FFFF; 错误,根据课程分析该寄存器实际的设置值应该是0x00000000;至于此处设置错误为什么代码还能工作,是因为210的iROM中已经初始化过PLL及时钟部分,所以这里SRC寄存器设置错误导致一上来就用了PLL之后的时钟也不会错(iROM之后PLL就正常工作了)。 5、《1.5.11.SDRAM初始化》一节中,讲到“我们X210使用的DDR芯片是128Mb*8,8表示8个bank”这个是错误的。应该是:X210使用的是64Mb*16的规格,这里16表示的是内存芯片的位宽是16位的(这才能跟原理图上对应上) 6、在《4.2.5.位运算实战演练》一节中,bit7~17进行清零,应该是用0x7ff操作而不是0x3ff(7~17是11位,因此是0x7ff,而不是0x3ff) 7、4.5.13节中,大小端模式定义写反了。 4.3.5.3中&a[0]做左值和右值都讲错了。&a[0]表示数组首元素首地址,是个常量所以不能做左值;做右值时就表示数组首元素首地址的值,等同于a做右值。 linux应用中讲open的O_CREAT时讲错了,要仔细看一下。