学了5天Arm,今天谈谈初学感受 (转)

一.初探 
     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的指令集还不熟,独立写一个启动代码还不行,过几天吃透了,单独发一贴谈谈启动代码。

时间: 2024-10-14 14:08:00

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

js初学感受

刚开始学js觉得这个软件是个比较难的语言类的软件,与c语言相比比较样简单一些,声明一些变量只需要let 就足够了, 在本周的学习中,学习了js的发展史,与基础的知识,循环还没讲完,练习题让我们比较容易接受. 老师的思路给我们讲解时,会很清楚,便于我们吸收,让我们比较容易理解.在讲完比较简单的if判断,与switch的区别,为什么有if还会有switch的存在. 因为if的形式写的代码,不便于理解与阅读,但是在switch中,会更清楚的看到需要的条件,便于理解,与阅读. 在老师讲的运费计算的题时,

ARM、8051、AVR、MSP430、Coldfire、DSP、FPGA七种体系比较区别

概述 我以为这样比没有意义,做嵌入式系统最大特征是“嵌入”二字,也就是说你的控制系统是嵌入于你的控制对象之中,所以首先是服从于对象的需求和特征,脱离对象空论谁好谁坏有何依据? 每个MCU都有其存在的价值,每个使用者的选择都有其道理,AVR开始时是以单时钟周期指令为卖点,相对于当时 12个时钟的经典51确实有优势,而且基于CMOS的特征,时钟越高功耗越大,所以它在能耗上似乎明显占优. 可随着技术的改进,51现在已经早就有了4时钟周期,`2时钟周期乃至单时钟周期的芯片了,此时AVR的速度优势已不存在

重学线代——声明篇

为啥重学线代呢? 1.当初学得模棱两可,时间长了啥也没剩下 2.越来越发现线代很流弊,很有用(不只是线代,各门数学都有此感触) 3.比较巧合地在网络上发现了个很好的线代教学资源 4.假期浪费了太可惜了 你这堆博客要写点啥呢? 课程笔记.个人领悟.无知吐槽.等等等等 你还想说点啥么? 没了 哦 恩

嵌入式和就业(转)

这个文章我给自己约了很久了,一直想写,但是最近忙着写酷系统构架,所以没有动笔.然而面对众多酷学玩购买者对嵌入式和人生的迷茫,我不得不花时间来思考这个主题,并和大家交流.        嵌入式这行我接触过很多初学者,以前带一些师弟入行,到现在开发产品,更多的朋友加入到嵌入式学习者的行列中来.一方面,这些朋友对嵌入式行业充满了希望,另一方面,又对自己的未来感到迷惑,不知道该怎么走,该怎么创造自己的一片天.        就整个世界和当前的时代来说,嵌入式必然会成为最具魅力的行业.为什么这么讲,大家可

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

如遇链接无法打开,建议使用 https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path-and-methods.md 这个链接进行阅读. 到目前为止,我觉得不管是在公众号后台.知乎还是微信上面我被问的做多的就是:"大佬,有没有 Java 学习路线和方法"(大佬属现代流行的客气称呼,本人非大佬哈).所以,这部分单独就自己的学习经历来说点自己的看法. 前言 大一的时候,我仅仅接触

[杂谈]这个四月

突然发现就到这个月末了,又到写月报的时候了. 这个月在吃老本,没有去学习新的技术,用的还是之前学的东西,唯一可以谈谈的就是我把工大助手现有版本做了一次完全重构.改以前的Code-Behind为现在的MVVM,这儿有一点不得不说.我用的MVVM框架是MVVMLight,但用的最多的就是他的ViewModelBase和Messager,当然还有那个IOC容器Locator,这几个的确很好用.不过在改写的过程中,还是遇到很多问题,比如最常见的就是如何绑定一个事件,很早之前是自定义一个command去实

转:成年人的思想还能进步么?

这文笔,什么时候才能学到手? 转自:学而时嘻之 本文谈谈成年人思想的进步. 在我们上小学上中学的时候,不管学校的教育多么糟糕,我们的思想都在不停的进步.这表现在如果我们回首一年以前的自己的某些想法,做的某些事,会觉得那时候自己很傻.考察自己的进步的一个更客观的指标大概是“刮目相看指数”.别人如果一年没看到我们,再看的时候,第一反应往往是“你都长这么大了”.如果三年没看到再看,可能都不认识了. 但是成年以后,一个很可能的趋势是人的进步速度一般会越来越慢,以至于停止进步,甚至倒退.他们思想最牛B的时

【转】关于程序员成长的一点思考

新闻来源:51CTO 程序员的我们,是否想过今后的路该怎么走.如何发展.技术怎样提高?其实这也是我一直在思考的问题.下面就此问题,分享下我的看法.因为我阅历有限,有什么说的不对的,大家一起喷! 一.程序员应该打好基础 1. 现在开发工具众多.语言泛滥,经常听人说”不学C C++神马都是浮云”.”C C++才是万王之王”,C C++就真比PHP.Lua.AS.JAVA牛吗? 其实不在于语言本身,而在于C C++依附的平台.因为最靠近操作系统,所以能发挥其它语言不具有的性能优势,而且很多数据结构.算

关于如何学习java

其实很多人会选择参加培训班,因为自学的时候困惑真的好多,真是对的.我这篇文章只是曾对在校的大学生而已来说的,身为一个软件工程专业学生的我.迷茫了4年,这是为什么呢?原因归纳有如下几点:1大学的老师好敷衍学生,敷衍了事,一点责任心的没有.2自身的学习方法不对3受其他的人影响. 在此,我就说说如何去学习java这本语言.说实话,java真心难学,不要说什么ssh之类的,就连基础的javase都够你学一辈子,现在主流jdk5,6,7就这个几个版本的内容都够你学,没人多少人个敢说自己学的很精通,为什么呢