一.初探 
     4月1日入手友善mini2440。先看了下板子,感觉没什么稀奇的,s3c2440总线上外挂SDRAM(对这个不是很感冒,之前搞过一个FPGA的SDRAM控制器),NOR    .   flash,Nand Flash, Enternet PHY +MAC芯片。心里视乎有点数了--------程序烧在Flash里,上电后s2c2440把代码从Flash调入DRAM执行…..直觉上想.  .   到应该有一个程序来完成copy的事,但是这个程序本是如何被最先调入Dram的呢(后边谈)。 
.   接着打光盘里友善的手册,大致翻了一下,发现说的全是基于操作系统的编程和一点基本的操作,对初学的我来说掩盖了太多底层的细节。

.   本人专业是电气工程及其自动化,结合自己的情况我觉得应该先把Arm当单片机使更合适些。

1. 基于上边的想法我应该先从硬件上入手

(1)先搞清S3C2440里边到底有什么东西,是什么东西?不用说直奔Datasheet去了。 
            手册里的一张图解决了我的疑问

 
 (原文件名:s3c2440.JPG)

S3C2440 = Arm920T + 挂在AHB上的一堆东西 + 挂在APB上的一堆东西 
          ARM920T = ARM920TDMI + 一堆东西

S3C2440里的外设都还好搞定,照着Datasheet来就行了。

下边重点落到了ARM920T上 
       (2)了解ARM920T 
    明确目的后直奔www.arm.com  点击Documention链接

 
 (原文件名:arm header.JPG)

资料前几天已经上传 
          http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=3275791&bbs_page_no=1&bbs_id=1032

 
 (原文件名:arm9TRM.JPG)

原来ARM920T = ARM9TDMI(CPU 核心) + MMU(内存管理单元-------内存保护,地址映射)

在ARM920T_TRM1_S.pdf里了解到

 
 (原文件名:what is ARM920T.JPG)

到此为止我已经有了S3C2440的总体概念

S3C2440 = ARM9TDMI + MMU + 与AHB(高级高性能总线)互联的外设 + 与APB(高级外设总线)互联的设备

二.整理思路,制定学习计划

1 .硬件上 
         Ok现在基本上搞清状况了,至少知道自己在和什么东西打交道,思路清晰后我理出学习计划: 
        (1)学习S3C2440的使用,须从ARM9TDMI开始,具体的说ARM9TDMI的指令集,寻址方式……处理器状态,中断等(练习通过ADS在计算机上仿真)   .

(2)学习与ARM9TDMI 相伴左右的MMU的知识,如何实现能内存保护,虚地址到物理地址转换…..从这几天的研究看这些主要是通过协处理器CP15控制  .            的。

(前边说了ARM920T = ARM920TDMI + MMU 上边的搞定了ARM920T自然也就搞定了)

(3)学习S3C2440内外设的使用如lcd控制器,看门狗,定时器,实时钟,usb…..主要是S3C2440 Datasheet里的内容了,可以针对每个单独外设编写    .            程序练习。先学串口的使用,这对后边的的学习帮助较大,因为把程序运行结果从串口发到PC验证程序比较方便。

2. 软件上 
 既然选了带MMU的ARM就一定是想跑操作系统的 
 我计划是Linux方向 
(1)(偏硬方向)Liunx基本操作(命令行)----一般Linux程序设计------Linux驱动编写----软件移植-----内核移植 
(2)(偏软方向)Linux基本操作(命令行)---一般Linux程序设计-------网路编程,qt图形界面编程…… 
   (需要有基础知识--------汇编,C,c++,操作系统…)

3. 工具链使用

(1)编程工具 
     Windows平台下: 
Windows平台下好想主要有这几种IDE:ads,keil,iar 
                初期学习选择最不方便的-------ADS(当然还有更不不方便的比如直接在命令行编译,汇编,链接)

Linux平台下: 
        Gcc,汇编器,链接器使用

(2)调试工具 
             mini2440自配的H-JATG, Jlink等调试器代理的使用和在IDE中如何配置

以上是我的学习思路和计划

三.寻找最初成就感 
    上边说了,我准备先把S3C2440当单片机用,下边是我的第一个Arm程序-------Led流水灯

运行平台: 友善mini2440 
        是否需要操作系统支持: 否

根据mini2440开发板光盘程序稍作修改所得

点击此处下载 ourdev_433343.rar(文件大小:63K) (原文件名:Led.rar)  
        程序很简单,最难的就是启动代码那块(直接用的光盘里的启动代码,最近在研究启动那块),其实启动代码本身并不难,就是完成以下几个功能 
         1.初始化堆栈, 
         2.设置中断, 
         3.初始化外设,时钟 
         4. 切换处理器模式 
         5.跳转到用户程序入口

程序可以直接通过supervivi下载到内存运行,因为程序小于4K所以也可以直接烧在Nand flash运行 
      (因为S3C2440支持从Nand引导,片内带有4kSRam用 于运行bootloader,就是前边说的用来copy的一小段bootloader)

arm的指令集还不熟,独立写一个启动代码还不行,过几天吃透了,单独发一贴谈谈启动代码。

学了5天Arm,今天谈谈初学感受 (转)的更多相关文章

  1. # 36氪开放日 • 杭州 • 11月10日 # 谈谈参会感受

           今天下午,第一次去参加了36氪的开放日,虽然站着听有点累,但是也很值得.会上很多创业者都分享和展示了他们的产品,一方面自己了解了一些产品人的故事,另一方面也对如何做产品有了新的认识.参会 ...

  2. iOS逆向工程之Hopper中的ARM指令

    虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学.现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少的实验,当时自我感觉ARM这门课学的还是 ...

  3. STM32启动代码分析及其汇编学习-ARM

    STM32 启动代码 Author By YuCloud 边看启动文件边学汇编 汇编 see ARM: Assembler User Guide see: https://blog.csdn.net/ ...

  4. “IT学子成长指导”专栏及文章目录 —贺利坚

    迂者专栏关键词 就 业 大一 大二 大三 大四 自学 职 场 专业+兴趣 研究生 硕士 规 划 考 研 大学生活 迷 茫 计算机+专业 基本功 学习方法 编程 基 础 实践 读书 前 途 成 长 社团 ...

  5. 【强烈推荐】可能是最适合你的 Java 学习路线和方法

    如遇链接无法打开,建议使用 https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path- ...

  6. JavaSE基础知识总结

    最近回顾了一下Java的基础知识,决定写成博客梳理一遍,主要是JavaSE部分最基础的知识,适合考前突击,学后回顾,不适合作为初学材料. 简单的列个目录吧: 一.数据类型和运算符 二.流程控制与数组 ...

  7. 求逆序对常用的两种算法 ----归并排 & 树状数组

    网上看了一些归并排求逆序对的文章,又看了一些树状数组的,觉得自己也写一篇试试看吧,然后本文大体也就讲个思路(没有例题),但是还是会有个程序框架的 好了下面是正文 归并排求逆序对 树状数组求逆序对 一. ...

  8. elasticsearch视频

    简单的集群管理 (1)快速检查集群的健康状况 es提供了一套api,叫做cat api,可以查看es中各种各样的数据 GET /_cat/health?v epoch timestamp cluste ...

  9. 求逆序对 ----归并排 & 树状数组

    网上看了一些归并排求逆序对的文章,又看了一些树状数组的,觉得自己也写一篇试试看吧,然后本文大体也就讲个思路(没有例题),但是还是会有个程序框架的 好了下面是正文 归并排求逆序对 树状数组求逆序对 一. ...

随机推荐

  1. 用户输入input函数和代码注释

    一.读取用户输入 py3中input()读取用户输入,输出全部是默认str字符串数据类型,一般将其赋值变量,用户输入才继续往下走程序.(py2的不同已单独列出随笔) 二.注释 注释的作用:代码量大的时 ...

  2. JQuery dom 操作总结

    DOM 操作之获取值 获得内容 - text():设置或返回所选元素的文本内容 $("#btn1").click(function(){ alert("Text: &qu ...

  3. mysql use index () 优化查询的例子

    USE INDEX在你查询语句中表名的后面,添加 USE INDEX 来提供你希望 MySQ 去参考的索引列表,就可以让 MySQL 不再考虑其他可用的索引.Eg:SELECT * FROM myta ...

  4. AutoSharedLibrary -- 基于模板元编程技术的跨平台C++动态链接载入库

    基于模板元编程技术的跨平台C++动态链接载入库.通过模板技术,使用者仅需通过简单的宏,就可以使编译器在编译期自己主动生成载入动态链接库导出符号的代码,无不论什么额外的执行时开销. extern &qu ...

  5. Android入门:短信和拨打电话

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  6. 积跬步,聚小流------界面经常使用的jeecms标签

    * JEECMS初印象 第一次接触JEECMS,突然脑海就浮现了一句话"20元建站,立等可取",原来这都是真的... * JEECMS的界面经常使用标签 临时忽略掉环境搭建.栏目配 ...

  7. 关于Mysql Enterprise Audit plugin的使用

    正如之前看到的一篇文章,假设想要知道是谁登陆了你的数据库server,干了什么东西,那么你须要使用Mysql Enterprise Audit plugin. 以下介绍一下Mysql Enterpri ...

  8. Windows 10 MBR转GPT分区

    注意:分区有风险,操作需谨慎,提前备份好数据. 说明: 1.有“系统保留”的分区,可以直接删除,用来做GPT分区的UEFI启动分区. 2.没有“系统保留”分区的,需要在分区最前面调整分区大小,留出30 ...

  9. (转)Android开发书籍推荐:从入门到精通系列学习路线书籍介绍

    Android开发书籍推荐:从入门到精通系列学习路线书籍介绍 转自:http://blog.csdn.net/findsafety/article/details/52317506 很多时候我们都会不 ...

  10. [Swift]注册并购买加入Apple开发者计划。提示: “你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行”

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...