友善提供的SuperBoot功能强大,在其启动过程中已经对S3C6410做了很多初始化的工作,在裸机编程时使用它不利于了解ARM的启动过程。所以计划直接将裸机程序烧到SD卡中启动。
使用友善提供的SD-Flasher.exe程序,经过多次实验,都无法将裸机程序烧写到SD卡上,2G,4G,小卡,大卡都试了一遍,没有成功。后来想到使用winhex直接烧写到SD卡,才成功完成实验。
我是将裸机程序使用winhex烧写到4G的大卡上,下面以led.s为例,记录一下全过程。
首先在虚拟机中编译led.s,我的环境是winxp,vmware10,gcc 4.6.3。
1: cd 1.led.s
2: make clean
3: make
编程成功后,生成led.bin,使用winhex打开该文件,

然后将SD卡通过读卡器插入到电脑,使用winhex打开SD卡,

将led.bin中的数据复制到SD卡的相应扇区即可。
4G的SDHC卡复制到【LAST -1042】扇区,2G的SD卡复制到【LAST-18】扇区,详细可以参考资料
http://cky0612.blog.163.com/blog/static/2747891620111021154867/
http://wenku.baidu.com/view/36c9774fe518964bcf847c28.html
完成后,将卡插入到开发板中,将开关拨打SD BOOT,加电点亮后,顺利的话就能看到几个LED小灯一闪一闪的亮了。
关键字:Tiny6410 裸机编程 SD卡启动
引用地址:
Tiny6410裸机编程——(一)SD卡启动
推荐阅读最新更新时间:2026-03-25 12:10
IMX6ULL学习笔记(12)——通过SD卡启动官方SDK程序
一、识别SD卡 首先 SD 卡插入读卡器,再把读卡器插入电脑。 VMWare 有时候会自动弹出对话框,选择 连接到虚拟机 即可。 如果没有对话框,可以通过菜单 可移动设备 找到 SD 卡,点击 连接。 使用 lsblk 命令查看当前磁盘设备。 可看到新增加了sdb设备,此处请务必检查好sd卡所对应的磁盘设备,以免破坏其他磁盘的数据! 二、使用野火烧写工具将程序烧写到SD中 2.1 下载工具 官方SDK编译生成的.bin文件并不能直接放到开发板上执行,因为缺少必要的头部信息。 在SDK中SDK_2.2_MCIM6ULLtoolsimgutil下readme.txt文件介绍了添加头部信息的步骤, 如果使用
[单片机]
ARM芯片开发(S5PV210芯片)——SD卡启动
1、SD卡启动 顾名思义就是启动代码存放在SD卡中,设备从SD卡中启动。用SD卡启动有一些好处:譬如可以在不借用专用烧录工具(类似Jlink)的情况下对SD卡进行刷机,然后刷机后的SD卡插入卡槽,SoC既可启动;譬如可以用SD卡启动进行量产刷机(量产卡)。 2、支持SD卡启动的条件 SD卡启动不是每款芯片都支持的,因为SD卡有个难点,就是SD卡不能上电直接使用也不能通过总线与CPU相连,要通过Soc的SD卡控制器发命令才能与SD卡通信。这个有个矛盾点,SD卡需要初始化才能使用,但是能初始化SD卡的启动代码又在SD卡上,这就陷入了死锁。所以之前的设备都是用Norflash做启动介质,因为NorFlash上电即可使用,还可以片内执
[单片机]
STM32裸机编程的基础知识(1)
这个系列将介绍 STM32 裸机编程的基础知识,以便更好地理解 STM32Cube、Keil 等框架和 IDE 是如何工作的。本指南完全从头开始,只需要编译器和芯片数据手册,而不依赖任何其它软件工具和框架。 这个系列涵盖了以下话题: 存储和寄存器 中断向量表 启动代码 链接脚本 使用 make 进行自动化构建 GPIO 外设和闪烁 LED SysTick 定时器 UART 外设和调试输出 printf 重定向到 UART 用 Segger Ozone 进行调试 系统时钟配置 实现一个带设备仪表盘的 web 服务器 我们将使用 Nucleo-F429ZI 开发板 (淘宝购买) 贯穿整个指南的实践,每个章节都有一个相关的完
[单片机]
s3c2440裸机-UART编程-2-UART编程实现
UART编程 1.初始化 我们的2440支持3个UART串口,以uart0为例讲解。 那么我们需要实现以下这几个函数完成串口的最基本功能: (1)uart0_init()用于初始化串口 (2)putchar()用于发送一个字符 (3)getchar()用于接收一个字符 (4)puts()用于发送一串字符 1.uart0_init() 1.配置uart0引脚 (1)根据原理图GPH2,3用于TxD0, RxD0。 (2)查看dataset,配置GPH控制寄存器,让GPH2,3配成uart模式;为了将其保持为高电平,先设置其为上拉。 GPHCON &= ~((3 4) | (3 6)); G
[单片机]
s3c2440裸机-内存控制器4-SDRAM编程实现
配置内存控制器-SDRAM编程配置 2440内存控制器共有13个寄存器。 BANK0--BANK5只需要设置BWSCON和BANKCONx(x为0~5)两个寄存器; BANK6、BANK7外接SDRAM时,除BWSCON和BANKCONx(x为6、7)外,还要设置REFRESH、BANKSIZE、MRSRB6、MRSRB7等4个寄存器。 下面分别说明各个寄存起的设置: 1.位宽和等待控制寄存器BWSCON(BUSWIDTH&WAITCONTROLREGISTER) 我们SDRAM的位宽为32,DW6 设置成10, 没有使用等待信号,所以WS6 =0。 bank7跟随bank6的配置, 因此BWSCON寄存器的值为:0x2
[单片机]
s3c2440裸机-spi编程-3-gpio模拟spi驱动OLED
操作OLED,通过三条线(SCK、DO、CS)与OLED相连,这里没有DI是因为2440只会向OLED传数据而不用接收数据。 gpio_spi.c来实现gpio模拟spi,负责spi通讯。对于OLED,有专门的指令和数据格式,要传输的数据内容,在oled.c这一层来实现,负责组织数据。 因此,我们需要实现以上两个文件。 1.SPI初始化 新建一个gpio_spi.c文件,实现SPI初始化SPIInt() 1.1 GPIO init(pinmux管脚等配置) 上图J3为板子pin2pin到OLED的底座。 GPF1作为OLED片选引脚,设置为输出; GPG4作为OLED的数据(Data)/命令(Command)选择引脚,
[单片机]
s3c2440裸机-I2c编程-1-i2c协议
1.硬件电路 I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。如下图: SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,需通过上拉电阻接电源VCC.当总线空闲时.两根线都是高电平。 I2C 总线标准模式下速度可以达到 100Kb/S,快速模式下可以达到 400Kb/S。SDA 和 SCL 这两根线必须要接一个上拉电阻,一般是 4.7K。 2.i2c协议规则 传输过程如下: 主控发送start讯号(S) 主控发送从设备地址(slave dev addr) 主控发送方向(W/R) 从设备应答(ack) 主控(or从设备)发送数据(data) 从设备(or主控)应答(ack) … 主控发送
[单片机]
s3c2440裸机-nandflash编程-2-nand控制器和访问时序
多简单,无非就是读写擦,像我们这款nand数据位宽8bit,一个周期绰绰有余。但地址就不一样了,比如此款nandflash容量256M = 2^28,那么需要28根数据线来传输才能一个周期传输完,但这款nandflash的数据总线位宽只有8bit, 只有8根数据线,所以需要把地址拆分成多次发送,先发送col地址,再发送row地址,此款nandflash是用了5个周期发送地址。 2.数据锁存时序(写数据) 从前面的命令地址锁存时序图中我们得知,CLE信号拉高,ALE信号拉低时,表示发送的命令;当CLE信号拉低,ALE信号拉高时,表示发送的地址;那么当CLE、ALE都拉低时,表示发送的数据,如下图,nCE, CLE, ALE都拉低了,
[单片机]