0%

对ARM的理解

2018年2月4日 下午11:51

概述:

有两个角度

  1. 与我在算法中总结的思路进行对比
  2. 反过头去看我在这段时间学的关于arm的所有知识点,有一个整体的认识
  3. 总结:在分析功能,写代码的时候,你脑子中一定要有2440硬件结构,这样才能从总体上心里有数整体上去理解2440结构

第一个角度

  1. 在算法中,我最根本的角度是:从现实的角度出发,即使是那些分治、贪心、动态规划也是理解成一种可以脱离代码这种表达形式的一种的现实的思路。
  2. 在arm中,如果你将算法的这种思路套入arm的整个编程过程中,你会发现这根本不需要你去考虑各种各样的方法,完全水土不服。造成这个现象的原因是:arm开发板整个硬件已经规定了基本上所有东西的用法,你只是用用而已,你没法改变。

我现在总结出来的关于arm中的思考体系是:

  1. (容易)第一步:根据现实的功能,分析我要使用那些2440部件?
    1. UART
    2. GPIO
    3. memory controller
    4. interrupt controller
    5. nor flash
    6. SDRAM
    7. SRAM
    8. nand flash controller
    9. ….LCD…SPI….PWM…CLOCK
  2. (难)第二步:继续明确我们要使用一个部件中的哪些寄存器?
    1. 这需要你两个能力:
      1. 2440各个部件的工作原理你要知道
      2. ::2440给你开放了哪些功能,能让你去编程控制(以寄存器的形式)::
    2. 当你把这个问题回答清楚之后,整个项目就完成了80%,省下的20%就是简单的代码去实现而已了
    3. 代码实现,这一点和算法是相同的,都不是最核心、最难的部分
  3. (容易)第三部:写代码去实现去吧,这个容易,写法是固定的

第二个角度:

Arm这门课中其实最核心的知识点应该是:讲解2440各个部件的工作原理+寄存器控制。但是却讲了很多其他的内容,eglinux makefile gcc c语言 vi等等,从章节上来说反而这些不重要的东西占据了大量的课时。这就说明arm这门知识本身并不多,而是arm周边的整套编程环境和琐碎。