Mini6410上最简单的LED点灯裸机程序 :

实验环境:

根据友善教程,要用ADS,据说现在都不用这个了,但是为了打开友善给的mcp工程,就下了一个,Win7下弄上兼容模式和管理员权限,再下一个SecureCRT代替超级终端。

一定要,把AXD也设置上。

secureCRT的配置:选择Serial串口,波特率115200,端口号:USB转串(去驱动程序查端口号,今天插了一个COM4,一个COM5)

实验步骤:

配置好了以后,打开CodeWarrior编译mini6410-led.bin文件

将bin文件直接复制到SD卡的images文件夹就行了, 然后配置FriendlyARM.ini文件

6410有两种运行机制:一种是将程序直接从SD卡加载到内存运行,一种是将SD的镜像烧到NAND FLASH上启动,因为我的FLASH上系统有用,就先不覆盖了。

第一种方法是烧到NAND FLASH上

Action=install 
OS= UserBin 
UserBin‐Image=mini6410‐led.bin

借助已经安装了SuperbootSD卡,可以把把mini6410‐led.bin 加载到内存中运行,步骤如下: 
把mini6410‐led.bin 拷贝到SD卡的images 目录下, 
打开FriendlyARM.ini配文件,修改如下关键定义:

第二种方法是直接在SD卡加载运行

Action=run 
OS= UserBin 
UserBin‐Image=mini6410‐led.bin 
UserBin‐StartAddress=50000000

通过读卡器拷贝到SD卡中——失败。。

通过查找,发现配置文件FriendlyARM.int搞错了——不是直接添加是修改已有的东西(尤其UserBin)

修改红色部分就行了,Action设置一下,安装还是运行?OS,换成UserBin,UserBin不能自己添加,是修改底部红色部分(要自己发现,友善的说明书真糙。。。。。)

  1. #This line cannot be removed. by FriendlyARM(www.arm9.net)
  2. LCD-Mode = Yes
  3. LCD-Type = S70
  4. CheckOneButton=No
  5. <span style="color:#ff0000">Action=install
  6. OS= Linux</span>
  7. VerifyNandWrite=No
  8. StatusType = Beeper| LED
  9. #################### Linux #####################
  10. Linux-BootLoader = superboot-6410.bin
  11. Linux-Kernel = Linux/zImage
  12. Linux-CommandLine = root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs init=nuxrc console=ttySAC0,115200
  13. Linux-RootFs-InstallImage = Linux/rootfs_qtopia_qt4-SLC.ubi
  14. Linux-RootFs-RunImage = Linux/rootfs_qtopia_qt4.ext3
  15. ################### Android ####################
  16. Android-BootLoader = superboot-6410.bin
  17. Android-Kernel = Android/azImage
  18. Android-CommandLine = root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs  init=nuxrc console=ttySAC0,115200 androidboot.console=s3c2410_serial0
  19. Android-RootFs-InstallImage = Android/rootfs_android-SLC.ubi
  20. Android-RootFs-RunImage = Android/rootfs_android.ext3
  21. ################### WindowsCE6 #################
  22. WindowsCE6-Bootloader= superboot-6410.bin
  23. WindowsCE6-BootLogo = WindowsCE6\bootlogo.bmp
  24. WindowsCE6-InstallImage = WindowsCE6\en\NK-i.bin
  25. WindowsCE6-RunImage = WindowsCE6\en\NK-i.bin
  26. #################### Ubuntu #####################
  27. Ubuntu-BootLoader = superboot-6410.bin
  28. Ubuntu-Kernel = Ubuntu/uzImage
  29. Ubuntu-CommandLine = root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs  init=nuxrc console=ttySAC0,115200
  30. Ubuntu-RootFs-InstallImage = Ubuntu/rootfs_ubuntu-SLC.ubi
  31. Ubuntu-RootFs-RunImage = Ubuntu/rootfs_ubuntu.ext3
  32. <span style="color:#ff0000">############### UserBin #################
  33. UserBin-Image=WindowsCE/NK-i.nb0
  34. userBin-StartAddress=50100000</span>

main.c文件如下

  1. #include "utils.h"
  2. static void LedDelay(void)
  3. {
  4. volatile unsigned int k;
  5. for(k = 0; k < 20000000; k++);
  6. }
  7. int main(void)
  8. {
  9. Uart_Init();
  10. Port_Init();
  11. Uart_SendString("\r\nHello, Mini6410\r\n");
  12. for(;;) {
  13. Led_Display(0x9); // 1001
  14. LedDelay();
  15. Led_Display(0x6); // 0110
  16. LedDelay();
  17. }
  18. return 0;
  19. }

比较简单,一看就懂,直接靠bit控制4个LED灯。for循环里LED灯先两边后中间,一个”LED灯对对碰“,可以修改一下玩,比如改成流水线,改成跳跃,或者交替闪烁,可以分别使用,嫌来回插拔SD卡麻烦我就一次试了

事实证明,最好分开测试:发现这个位操作的LED,0才是亮,1是灭;且LED4是低位,LED1是高位

  1. void Led_Display(int data)
  2. rGPKDAT = (rGPKDAT & ~(0xf<<4)) | ((data & 0xf)<<4);
  1. #include "utils.h"
  2. static void LedDelay(void)
  3. {
  4. volatile unsigned int k;
  5. for(k = 0; k < 20000000; k++);
  6. }
  7. int main(void)
  8. {
  9. Uart_Init();
  10. Port_Init();
  11. Uart_SendString("\r\nHello, Mini6410\r\n");
  12. for(;;) {
  13. //LED对对碰
  14. Led_Display(0x9); // 1001
  15. LedDelay();
  16. Led_Display(0x6); // 0110
  17. LedDelay();
  18. //流水灭灯
  19. LedDelay();
  20. LedDelay();
  21. Led_Display(0x1);//0001
  22. LedDelay();
  23. Led_Display(0x2);//0010
  24. LedDelay();
  25. Led_Display(0x4);//0100
  26. LedDelay();
  27. Led_Display(0x8);//1000
  28. LedDelay();
  29. LedDelay();
  30. <span style="white-space:pre">  </span>//流水亮灯
  31. <pre name="code" class="plain">     Led_Display(0xe);//1110
  32. LedDelay();
  33. Led_Display(0xd);//1101
  34. LedDelay();
  35. Led_Display(0xb);//1011
  36. LedDelay();
  37. Led_Display(0x7);//0111
  38. LedDelay();
  39. LedDelay();</pre>//交替闪烁:1、3同闪,2、4同闪     Led_Display(0x5); // 0101
  1. <pre name="code" class="plain">         LedDelay();  </pre>        Led_Display(0xa); // 1010<br>
  1. <pre name="code" class="plain">         LedDelay();  </pre><pre name="code" class="plain"></pre><pre name="code" class="plain">         LedDelay();  </pre><pre name="code" class="plain">          LedDelay();  </pre>        }    return 0;}

再来个mini6410-led-v2.bin,或者v3,再给ini设置一下就ok了。

  1. <pre name="code" class="cpp"></pre>

完成效果

ARM入门实践(一)----Mini6410上最简单的LED点灯裸机程序的更多相关文章

  1. Django入门实践(三)

    Django入门实践(三) Django简单应用 前面简单示例说明了views和Template的工作过程,但是Django最核心的是App,涉及到App则会和Model(数据库)打交道.下面举的例子 ...

  2. Web---演示Servlet的相关类、表单多参数接收、文件上传简单入门

    说明: Servlet的其他相关类: ServletConfig – 代表Servlet的初始化配置参数. ServletContext – 代表整个Web项目. ServletRequest – 代 ...

  3. sass、less和stylus的安装使用和入门实践

    刚 开始的时候,说实话,我很反感使用css预处理器这种新玩意的,因为其中涉及到了编程的东西,私以为很复杂,而且考虑到项目不是一天能够完成的,也很少是 一个人完成的,对于这种团队的项目开发,前端实践用c ...

  4. ARM入门最好的文章

    一 首先说说arm的发展  可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位.广义的嵌入式无非几种:传统的什么51.avr.pic称做嵌入式微控制器:arm是嵌入式微处理器 ...

  5. 微服务 + Docker + Kubernetes 入门实践 目录

    微服务 + Docker + Kubernetes 入门实践: 微服务概念 微服务的一些基本概念 环境准备 Ubuntu & Docker 本文主要讲解在 Ubuntu 上安装和配置 Dock ...

  6. 0.Python 爬虫之Scrapy入门实践指南(Scrapy基础知识)

    目录 0.0.Scrapy基础 0.1.Scrapy 框架图 0.2.Scrapy主要包括了以下组件: 0.3.Scrapy简单示例如下: 0.4.Scrapy运行流程如下: 0.5.还有什么? 0. ...

  7. Vuex入门实践(中)-多module中的state、mutations、actions和getters

    一.前言 上一篇文章<Vuex入门实践(上)>,我们一共实践了vuex的这些内容: 1.在state中定义共享属性,在组件中可使用[$store.state.属性名]访问共享属性 2.在m ...

  8. webpack的入门实践,看这篇就够了

    webpack的入门实践 我会将所有的读者概括为初学者,即使你可能有基础,学习本节之前我希望你具有一定的JavaScript和node基础 文中的 ... ...代表省略掉部分代码,和上面的代码相同 ...

  9. Azure DevOps Server 入门实践与安装部署

    一,引言 最近一段时间,公司希望在自己的服务器上安装本地版的 Azure DevOps Service(Azure DevOps Server),用于项目内的测试,学习.本着学习的目的,我也就开始学习 ...

随机推荐

  1. mercurial(Hg) Server 搭建 过程记录

    mercurial(Hg) Server 搭建 过程记录 1.  环境说明 只是测试搭建,环境为本机开发环境:win 8.1 + IIS8.5 软件准备: 2.  软件安装 先安装Python2.7, ...

  2. js 计算两个日期之间的周数

    //返回两个日期相差的周数 function WeeksBetw(date1, date2) { //这里的date1,date2都是Date对象 var d1 = new Date(date1); ...

  3. windows中java读目录空格变成%20 处理方法

    URL url = Thread.currentThread().getContextClassLoader().getResource(""); String path = ur ...

  4. static说明

    1.最基本用法:加static的全局变量或者函数,只能在本文件中使用.可见性只在本文件中. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话,我举例来说 ...

  5. hdu5322 Hope(dp)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Hope Time Limit: 10000/5000 MS (Java/Othe ...

  6. redis数据结构与主要命令

    redis的数据类型有:string.hashes.lists.sets,sorted sets 1.string类型: set.get添加键值对获得键值对.如果多次赋值会覆盖掉原来的value se ...

  7. itunes一进store就提示已停止工作该怎么解决

    改兼容,换盘重装什么的都试过了没用,可以听歌更新软件更改账号,但是就是进不了store,每次都是这个进度就卡死了. 问题事件名称: APPCRASH 应用程序名: iTunes.exe 应用程序版本: ...

  8. poj3294 --Life Forms

    Life Forms Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 12483   Accepted: 3501 Descr ...

  9. awk详解

    一.简介 强大的文本分析工具,基于指定规则浏览和抽取信息.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理.awk有3个不同版本: awk.nawk和ga ...

  10. Find Median from Data Stream 解答

    Question Median is the middle value in an ordered integer list. If the size of the list is even, the ...