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. vc2015 编译libcurl带openssl

    1.先编译zlib下载地址 http://zlib.net/ 我这边vc2015编译需要配置环境变量,不知道是装了wdk的原因还是多个vc版本的原因 设置环境变量lib和include路径 INCLU ...

  2. POJ 3352 无向图边双连通分量,缩点,无重边

    为什么写这道题还是因为昨天多校的第二题,是道图论,HDU 4612. 当时拿到题目的时候就知道是道模版题,但是苦于图论太弱.模版都太水,居然找不到. 虽然比赛的时候最后水过了,但是那个模版看的还是一知 ...

  3. ACM ICPC Team

    Link: https://www.hackerrank.com/challenges/acm-icpc-team/submissions/code/11617807 def count_max_to ...

  4. NPAPI开发常识

    其实,就在几天前,我根本不知道什么是NPAPI插件.因为最近的项目中用到需要在非IE下检测客户端是否安装,最终找到浏览器插件NPAPI. 以下资料来源于网络收集,以此给那些和我一样迷茫的人.本文的目的 ...

  5. 可以ping通,浏览器打不开网页 - 解决办法

    网络故障表现为: 1.电脑显示网络连接正常,DNS配置和hosts配置均正常 2.cmd可以ping通网址,域名 3.所有浏览器无法打开网页,有道云笔记置灰,微信二维码刷新失败 解决办法: 管理员权限 ...

  6. Xshell4连接Linux后 win快捷键锁屏

    今天在使用Xshell连接CentOS后 使用Vim编辑器编辑完后 习惯性的按了Ctrl+S 然后按什么都不起作用 只能重新连接 通过查资料得知 Ctrl + S 是Linux 锁屏的快捷键 要解除锁 ...

  7. js与objective-c的交互-备

    在写 JavaScript 的时候,可以使用一个叫做 window 的对象,像是我们想要从现在的网页跳到另外一个网页的时候,就会去修改 window.location.href 的位置:在我们的 Ob ...

  8. [TYVJ] P1031 热浪

    热浪 背景 Background USACO OCT09 9TH   描述 Description 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很 ...

  9. POJ 1379 Run Away

    题意:有n个陷阱,在X,Y范围内要求出一个点使得这个点到陷阱的最小距离最大. 思路:模拟退火,随机撒入40个点,然后模拟退火随机化移动. (这题poj坑爹,加了srand(time(NULL))不能交 ...

  10. format %x invalid or incompatible with argument问题解决方法

    现在还有好多朋友在用Protel 99se来画图,可是在现在的双核或四核电脑上运行Protel出现错误并且弹出对话框:“format '%x' invalid or incompatible with ...