一、NANO T3的资源特性。

NANO T3使用 三星的S5P6818作为片上SOC(即CPU)。S5P6818基于contex-A53内核,该内核有2个内存控制器(Memory Controller),其特性如下:

MCU-A features:
 MCU-A is organized DREX and DDRPHY
 Supports DDR3/LVDDR3 (Low Voltage DDR3)/LPDDR3/LPDDR2 memory
 Supports 8/16/32-bit SDRAM of 2 GByte
 Single Bank of Memory (32-bit data bus width)
 Supports Power down mode

 Supports Self Refresh mode

MCU-S features:

 Static memory
 Two Static Memory Chip Selects
 NAND Flash Interface
 23-bit address supports using latch address
 SLC NAND, MLC NAND with ECC (Supports BCH-algorithm)

 Static Memory Map Shadow

S5P6818内存映射如下:

从上图我们可以知道以下重要信息:

1、S5P6818自带SRAM,起始地址是: 0xffff 0000

2、S5P6818可以使用DDR作为内存,最大容量 2GB,起始地址为:0x4000 0000.

二、NANO T3的上电启动过程:

1、开发板上电后,首先启动的是 ROMboot 引导程序,该程序被烧录在板上的EEPROM上,由板子的开发商提供。

2、ROMboot执行过程中,会根据用户的选择从不同外设加载代码,对于NANO T3,如果没有按下boot键,则从EMMC加载代码,如果按下boot键,从SD卡加载代码,可以从官方wiki知道详细步骤。

3、我们要将裸板程序烧录到SD卡,SD卡的程序由2或三部分组成:

(1)直接在板内SRAM运行程序

此时先烧录nsih程序(后面称为1stboot),这个程序占用200字节空间,由官方提供,之后再跟上用户自己的程序。

(2)驱动板上DDR,跳转到外部内存上运行

此时代码结构为 1stboot + 2ndboot + 用户程序,2ndboot 同样由官方提供,官方还提供一个工具(mk6818)将这些代码连接起来。

三、编写汇编程序

1、使用内部sram 的汇编程序(驱动LED)

由于1stboot 占用512字节空间,用户程序从 0xffff 0200开始

这里仅提供Makefile的编写代码,用户程序读者可到我最后附上的链接查看:

led.bin:led.Sarm-none-eabi-gcc -o led_s.o -c led.Sarm-none-eabi-ld -Ttext=0xffff0200 led_s.o -o led_s_elfarm-none-eabi-objcopy -I elf32-littlearm -O binary led_s_elf led_s.bin./mk6818.exe led_s_pak.bin nsih.txt led_s.binclean:rm -f led_s_pak.bin led_s.bin led_s_elf *.o

这里用到的文件:led.S、Makefile、mk6818.exe、nsih.txt

注意:因为1stboot(即nsih.txt文件,其会被mk6818转换为机器代码)需要512字节空间,所以用户程序从0xffff 0200开始执行。

2、使用DDR作为内存

程序会跳转到DDR上执行,起始地址 0x43c0 0000(这是由2ndboot 指定的),附Makefile:

led.bin:led.Sarm-none-eabi-gcc -o led_s.o -c led.Sarm-none-eabi-ld -Ttext=0x43c00000 led_s.o -o led_s_elfarm-none-eabi-objcopy -I elf32-littlearm -O binary led_s_elf led_s.bin./mk6818.exe led_s_pak.bin nsih.txt 2ndboot led_s.binclean:rm -f led_s_pak.bin led_s.bin led_s_elf *.o

文件增加了2ndboot。没错,它是DDR的驱动程序,这样我们就可以使用ddr了。

四、将程序烧录到SD卡(这里只演示在DDR上执行的程序)

1、需要先准备编译器,配置好环境变量,这些都参照官方wiki

2、目录文件:

3、编译程序:

led_s_pak.bin是最终要烧录到SD卡的可执行程序

4、烧录到SD卡,运行结果:

烧录方法:使用winhex工具:

选择工具->打开磁盘->选择要烧录的sd卡

标记200~10000的区域,选择以00填充

打开编译得到的led_s_pak.bin,全选,以16进制复制

回到sd卡页面,标记200位置,右键->编辑->写入

保存扇区,将SD卡插入NANO-T3,按住boot键然后打开电源,可以看到led灯在来回闪烁。

五、代码和工具下载

代码下载地址:

https://github.com/ccyxchen/NANO-T3-LED

编译器下载地址:

git clone https://github.com/friendlyarm/prebuilts.git

板子的官方wiki:

http://wiki.friendlyarm.com/wiki/index.php/NanoPC-T3/zh#.E5.BF.AB.E9.80.9F.E4.BB.8ESD.E5.8D.A1.E5.90.AF.E5.8A.A8

winhex破解版:

https://download.csdn.net/download/ccyxchen/10327169

友善之臂 NANO T3 运行裸机程序相关推荐

  1. s5pv210运行裸机程序的方法之在SDRAM(DDR2)中运行

    从S5PV210的启动过程中可以知道,要想让我们的裸板程序运行起来有两种方法: 说明:我们假设从SD Card启动 1.在Internal RAM(iRAM)中运行 2.在SDRAM(DDR2)中运行 ...

  2. 使用MiniTools更方便的调试TQ210裸机程序

    感谢友善之臂开发出这么好的软件和BOOT. 请使用友善之臂的MiniTools工具下载程序到TQ210的RAM中去,地址是0x20000000. 使用SD-Flasher烧写友善的Superboot2 ...

  3. uboot启动裸机程序

    uboot启动裸机程序 概要 裸机程序编译 uboot文件接收与执行 概要 最近从嵌入式Linux学完,想要再往底层硬件走,于是写了个裸机程序,希望放到自己板子上跑起来,发现可以利用Uboot + m ...

  4. aiku基于mini2440下裸机程序开发《概述与SDRAM运行》

    大家好,我是aiku,今天主要跟大家介绍一些 基于mini2440下裸机程序开发<概述与SDRAM运行> 有什么问题:都可以联系我们,谢谢! 我是aiku,本博客主要写一些我们的项目经验与 ...

  5. Tiny4412裸机程序之代码在DDR SDRAM中运行

    转载:http://www.techbulo.com/1509.html Tiny4412裸机程序之代码在DDR SDRAM中运行 2014年11月13日 ⁄ 裸机程序 ⁄ 共 8647字 ⁄ 字号  ...

  6. linux 485串口运行一段时间之后 无反应,Supper tiny4412 用友善之臂官方文档资料移植uboot出错  出现OK后就没反应了 求大神解救...

    一. 为了方便大家查看我的问题,我把详细过程记录一下,希望大家能看出问题所在. 二. uboot 编译环境 :32位window7 的虚拟机Vmware9中的Ubuntu14.04,交叉编译工具arm ...

  7. 六自由度机械臂建模仿真(matlab程序),有控制面板,标价即为真实价格,代码可流畅运行

    六自由度机械臂建模仿真(matlab程序),有控制面板,标价即为真实价格,代码可流畅运行 1.机器人运动学正逆解.动力学建模仿真与轨迹规划,雅克比矩阵求解 2.蒙特卡洛采样画出末端执行器工作空间 3. ...

  8. 第三章 裸机_第一个裸机程序(上)

    第一章 裸机调试入门知识 1.对于友善之臂Micro2440开发板进行裸机调试时,需要将启动FLASH选项开关拨动到NOR FLASH上.这样做的原因:裸机程序里面会包含很多的初始化,这些初始化一般都 ...

  9. 嵌入式Linux系统环境搭建全流程-4412友善之臂开发板

    4412友善之臂开发板-Linux系统环境搭建全流程 ​ 没错,这篇确实值得一看!可能是由于我稍微会一点点哈,就有好多小伙伴就找我帮他们搭建环境,但Linux中的以及开发版连接,与烧写程序中的整个环境 ...

  10. 01-第一个裸机程序led及其引申

    目录 第一节 硬件知识_LED原理图 1. 点亮LED需要做的事情: 2. LED原理图 第二节:S3C2440启动流程与GPIO 1.原理图中的net 2.看芯片手册 3.补充几个概念.补充S3C2 ...

最新文章

  1. jsp实现日历(二)
  2. scrum敏捷开发工具leangoo如何添加成员
  3. 无需写代码!可一键生成前后端代码的开源工具
  4. React-Router ---withRouter
  5. Knapsack Cryptosystem【折半+查找】
  6. 信息学奥赛一本通 2025:【例4.11】体操队
  7. LVS-NAT和LVS-DR模式的实现详解
  8. 华为鸿蒙系统适应手机,魅族宣布接入鸿蒙生态,成为国内首家积极响应并支持华为的国内厂商...
  9. java基础学习(3)
  10. 5G NR CSI Report中的codebook/PMI
  11. rank函数怎么用oracle,Oracle学习教程:rank函数的使用
  12. win10专业版和企业版的区别_Win10专业版和家庭版有什么区别?
  13. 基于51单片机的多层电梯(1-16层)运行系统仿真设计_层数可改
  14. redis incr和incrBy的使用
  15. js实现下载文件流图片
  16. HP笔记本 no bootable device insert boot disk and press any key
  17. 软件开发解惑系列之五:内向性格不爱说话的同学,没有合适的工作方法是不行的
  18. Handler.obtainMessage()的认识和理解
  19. StringUtils.split用法
  20. 如何在fluent中设置各向异性材料

热门文章

  1. linux 命令详解 大于号_linux 命令中的大于号、小于号的作用
  2. 鸿蒙系统如何设置字体,图解鸿蒙OS独特的字体系统!
  3. 车载软件FrameWork集成字体(鸿蒙字体)
  4. 磁共振t1t2信号记忆顺口溜_核磁共振诊断报告中的T1T2信号是什么意思?
  5. 微软Rdlc报表设计器下载 RdlcDesigner
  6. 关于《走进名企之微软亚洲研究院》的观后感
  7. 水表188协议测试软件,水表下行通信规约标准188协议-V1.5标准版.pdf
  8. 名片小程序制作公司要如何选择?
  9. 工厂模式及在Spring中的应用
  10. php写的公告栏代码,可爱的公告栏代码