mini2440学习步骤

学了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 = Arm920T + 挂在AHB上的一堆东西 + 挂在APB上的一堆东西 
          ARM920T = ARM920TDMI + 一堆东西 

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

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

   


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

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

        在ARM920T_TRM1_S.pdf里了解到 
        



         到此为止我已经有了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天,也不可能有太大进展,主要用这几天理清思路,欢迎大虾指正! 

2012年10月15日星期一亲测可以下载 公开视频光盘目录结构 国嵌视频1.iso -学习方法与课程体系介绍(学前必看) -学习方法介绍.avi -国嵌嵌入式课程体系.pdf -嵌入式Linux学习方法.pdf -国嵌课程1-嵌入式入门体验班(上) -第1天(嵌入式系统概述) -国嵌体验入门班-1-1(嵌入式系统概述).avi -国嵌体验入门班-1-2(ARM概述).avi -国嵌体验入门班-1-3(嵌入式Linux概述).avi -国嵌体验入门班-1-4(2440开发板介绍).avi -国嵌体验入门班-1-5(软硬件环境搭建).avi -第2天(开发板快乐体验) -国嵌体验入门班-2-1(开发板系统安装).avi -国嵌体验入门班-2-1(开发板系统安装-Jlink方式).avi -国嵌体验入门班-2-1(开发板系统安装-并口方式).avi -国嵌体验入门班-2-2(裸机程序体验).avi -国嵌体验入门班-2-3(QT系统体验).avi -国嵌体验入门班-2-4(Android系统体验).avi 国嵌视频2.iso -国嵌课程1-嵌入式入门体验班(下) -第3天(Linux系统体验) -国嵌体验入门班-3-1(Linux定制安装).avi -国嵌体验入门班-3-2(Linux命令).avi -国嵌体验入门班-3-3(VI使用).avi -国嵌体验入门班-3-4(Linux系统管理).avi -国嵌体验入门班-3-5(Shell编程).avi -国嵌体验入门班-3-6(Qcd功能演示).avi -国嵌体验入门班-3-7(必修实验).avi -国嵌课程2-嵌入式Linux应用开发班 -第1天(编程基础) -国嵌应用班-1-1(GCC程序编译).avi -国嵌应用班-1-2(GDB程序调试).avi -国嵌应用班-1-3(makefile工程管理).avi -国嵌应用班-1-4(必修实验).avi -第2天(文件时间编程) -国嵌应用班-2-1(系统调用方式访问文件).avi -国嵌应用班-2-2(库函数访问文件).avi -国嵌应用班-2-3(时间编程).avi -国嵌应用班-2-4(必修实验).avi -第3天(多进程程序设计) -国嵌应用班-3-1(进程控制原理).avi -国嵌应用班-3-2(进程控制程序设计).avi -国嵌应用班-3-3(必修实验).avi -第4天(进程间通讯) -国嵌应用班-4-1(进程间通讯概述).avi -国嵌应用班-4-2(管道通讯).avi -国嵌应用班-4-3(信号通讯).avi -国嵌应用班-4-4(共享内存通讯).avi -国嵌应用班-4-5(必修实验).avi -第5天(进程间通讯) -国嵌应用班-5-1(消息队列).avi -国嵌应用班-5-2(信号量).avi -国嵌应用班-5-3(必修实验).avi -第6天(进程间通讯) -国嵌应用班-6-1(线程基础).avi -国嵌应用班-6-2(多线程程序设计).avi -国嵌应用班-6-3(必修实验).avi -第7天(网络编程) -国嵌应用班-7-1(Linux网络概述).avi -国嵌应用班-7-2(Linux网络编程基础).avi -国嵌应用班-7-3(TCP程序设计).avi -国嵌应用班-7-4(UDP网络程序设计).avi -国嵌应用班-7-5(并发服务器).avi -国嵌应用班-7-6(必修实验).avi 国嵌视频3.iso -国嵌课程3-ARM系统进阶班 -第1天(ARM系统开发基础) -ARM系统精讲班-1-1(ADS集成开发环境).avi -ARM系统精讲班-1-2(ARM工作模式).avi -ARM系统精讲班-1-3(ARM寄存器).avi -ARM系统精讲班-1-4(ARM寻址方式).avi -ARM系统精讲班-1-5(ARM汇编指令详解).avi -第2天(ARM系统开发基础) -ARM系统精讲班-2-1(ARM汇编指令详解).avi -ARM系统精讲班-2-2(ARM伪指令).avi -ARM系统精讲班-2-3((混合编程).avi -ARM系统精讲班-1-8(必修实验).avi -第3天(LED驱动程序设计) -ARM系统精讲班-2-1(GPIO).avi -ARM系统精讲班-2-2(LED控制程序设计).avi -ARM系统精讲班-2-3((LED闪烁).avi -第4天(LED与按键驱动程序设计) -ARM系统精讲班-4-1(ARM中断控制系统).avi -ARM系统精讲班-4-2(按键控制程序设计).avi -ARM系统精讲班-2-6(必修实验).avi -第5天(定时器与时钟驱动程序设计) -ARM系统精讲班-5-1(ARM时钟体系).avi -ARM系统精讲班-5-2(定时器驱动程序设计).avi -国嵌课程4(嵌入式LINUX内核驱动进阶班-上) -第1天(内核开发基础) -国嵌内核驱动进阶班-1-1(Linux内核简介).avi -国嵌内核驱动进阶班-1-2(Linux内核源代码).avi -国嵌内核驱动进阶班-1-3(Linux内核配置与编译).avi -国嵌内核驱动进阶班-1-4(Linux内核模块开发).avi -国嵌内核驱动进阶班-1-5(必修实验).avi -第2天(U-Boot移植) -国嵌内核驱动进阶班-2-1(嵌入式linux系统架构).avi -国嵌内核驱动进阶班-2-2(交叉工具链).avi -国嵌内核驱动进阶班-2-3(Bootloader介绍).avi -国嵌内核驱动进阶班-2-4(U-Boot介绍).avi -国嵌内核驱动进阶班-2-5(U-Boot命令).avi -国嵌内核驱动进阶班-2-6(U-Boot启动流程).avi -国嵌内核驱动进阶班-2-7(Uboot移植).avi -国嵌内核驱动进阶班-2-8(必修实验).avi 国嵌视频4.iso -国嵌课程4(嵌入式LINUX内核驱动进阶班-下) -第3天(内核开发基础) -国嵌内核驱动进阶班-3-1(嵌入式linux内核制作).avi -国嵌内核驱动进阶班-3-2(根文件系统制作).avi -国嵌内核驱动进阶班-3-3(内核启动流程).avi -国嵌内核驱动进阶班-3-4(嵌入式文件系统).avi -国嵌内核驱动进阶班-3-5(必修实验).avi -第4天(内存管理子系统) -国嵌内核驱动进阶班-4-1(Linux内存管理).avi -国嵌内核驱动进阶班-4-2(进程地址空间).avi -国嵌内核驱动进阶班-4-3(内核地址空间).avi -国嵌内核驱动进阶班-4-4(Linux内核链表).avi -国嵌内核驱动进阶班-4-5(Linux内核定时器).avi -国嵌内核驱动进阶班-2-7(Uboot移植).avi -国嵌内核驱动进阶班-2-8(必修实验).avi -第5天(进程管理子系统) -国嵌内核驱动进阶班-5-1(LINUX进程控制).avi -国嵌内核驱动进阶班-5-2(LINUX进程调度).avi -国嵌内核驱动进阶班-5-3(Linux系统调用).avi -国嵌内核驱动进阶班-5-4(Proc文件系统).avi -国嵌内核驱动进阶班-5-5(内核异常分析).avi -国嵌内核驱动进阶班-5-6(必修实验).avi -第6天(简单字符设备驱动程序设计) -国嵌内核驱动进阶班-6-1(LINUX驱动程序介绍).avi -国嵌内核驱动进阶班-6-2(字符设备驱动程序设计).avi -国嵌内核驱动进阶班-6-3(字符设备驱动程序实例分析).avi -国嵌内核驱动进阶班-6-4(竞争与互斥).avi -国嵌内核驱动进阶班-6-5(必修实验).avi -第7天(高级字符设备驱动程序设计) -国嵌内核驱动进阶班-7-1(Ioctl设备控制).avi -国嵌内核驱动进阶班-7-2(内核等待队列).avi -国嵌内核驱动进阶班-7-3(阻塞型字符设备驱动).avi -国嵌内核驱动进阶班-7-4(Poll设备方法).avi -国嵌内核驱动进阶班-7-5(自动创建设备文件).avi -国嵌内核驱动进阶班-7-6(必修实验).avi
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值