简介

SDIO(Secure Digital Input and Output),即安全数字输入输出接口。它是在SD卡接口
的基础上发展而来,通常的存储设备,如TF卡,以及EMMC等存储芯片都是通过SDIO总线来通信的。

一.s5p4418的SDIO说明

 s5p4418的SDIO总线的属性如上图所示,兼容MMC4.41,eMMC4.5规范,兼容SDIO3.0,最高时钟为50MHZ,总线三个通道,分别是SDIO0,SDIO1,SDIO2。
 另外TF卡和EMMC是嵌入式设备中比较重要的存储设备,也是比较常用的启动设备,大多数Soc芯片上电后都是通过SDIO总线从外部存储设备中读取bootloader和镜像文件来启动我们的板子。

二. s5p4418的启动流程

  本次仅仅针对TF卡启动来说明,对于s5p4418的TF卡启动流程默认是上电执行IORM代码,IROM代码是第一启动程序,然后从TF卡中读取扇区1~扇区64到内部SRAM(0xFFFF_0000)中运行,这段代码称为2ndboot,最后执行的是DDR中UBOOT程序。

三. 2ndboot的工作流程简单介绍

  本来2ndboot是三星不开源的一部分代码,但是笔者不幸从网上找到了这份代码,并做了简单的研究,得出2ndboot大概的流程如下:

1. 初始化PLL等时钟
2. 初始化串口
3. 初始化DDR3
4. 初始化SDIO总线
5. 读取TF中的uboot到DDR中然后运行




  注意:2ndboot不是简单的启动,它会读出TF卡的64号扇区,并检查这个扇区最后的4个字节是不是“NSIH”,然后从64号扇区解析出uboot.bin的大小,还有加载到内存哪个位置,以及运行时内存的地址,因此简单的用dd命令把2ndboot烧写到TF卡是无法正常启动uboot.bin。
  这也是把uboot.bin直接用dd命令更新的到tf卡的扇区65中,有可能会启动失败的原因(仅仅针对2014版本的uboot)。而fastboot烧写uboot.bin的时候,是会更新TF卡的64号扇区的!!!

四. 裸机的SDIO程序简介

  由于裸机程序是借助2ndboot启动的,因此裸机是运行在DDR中的,所以不需要初始化DDR了,我们仅仅初始化串口和SDIO,然后读出我们期望的扇区数据,由串口打印出来即可。

  由于篇幅有限仅仅贴出main函数的代码:

void main(void)
{int i ,sector;U8 data[512];struct NX_SecondBootInfo    TBI;//2ndboot信息表,来自扇区64Clk_Pll0_Init();Uart0_Init(); //串口初始化uart_puts("Uart Init Ok\r\n");Clk_Pll1_Init();Cpu_Freq_Init();uart_puts("CPU FCLK Init Ok\r\n"); //读出s5p4418 2ndboot 部分的加载信息SDMMC_Init_And_ReadSectors(64, (U32 *)&TBI);print_2ndboot_load_info(&TBI);/* 普通扇区读测试 */sector = 65; /* 读测试扇区 */SDMMC_Init_And_ReadSectors(sector, (U32 *)data);/* 打印扇区内容 */uart_puts("Sectors: ");uart_put_hex((U32)sector);uart_puts("\r\n");for(i = 0; i < sizeof(data); i++) {uart_put_hex8(data[i]);uart_puts(" ");if((i + 1) % 16 == 0)uart_puts("\r\n");}GPIOB12_LED_Init();while(1){/* 翻转GPIOB12作为心跳指示灯 */gpio_led_set_high();delay(50000000);gpio_led_set_low();delay(50000000);}
}

五. 裸机程序烧写

  烧写方式,如果读者用的是全新的TF卡,需要把前置镜像烧写到扇区1~扇区64,然后再把
裸机程序烧写到扇区65开始的位置,上电才能正常运行,即boot_sec1~sec64.bin 文件。

5.1 烧写前置bin文件

dd if=boot_sec1~sec64.bin of=/dev/sdx seek=1
sync

注意:如果卡内事先有可以启动的镜像可以忽略烧写扇区1~扇区64,然后直接把固件烧到扇区65中
注意:/dev/sdx 要根据实际的TF卡来定,比如/dev/sdc!!!

5.2 烧写裸机程序main.bin文件

dd if=main.bin of=/dev/sdx seek=65
sync

注意:/dev/sdx 要根据实际的TF卡来定,比如/dev/sdc!!!

六.测试结果

七. 源码工程文件


下载方式:
链接:https://pan.baidu.com/s/1wS_pLhFwkH7FD0JmD42Wkw
提取码:uku7

S5P4418裸机之SDIO程序相关推荐

  1. 计算机裸机与应用程序及用户之间的桥梁是,2016计算机二级《MS Office》单选试题与解析...

    2016计算机二级<MS Office>单选试题与解析 (1)下列叙述中正确的是 A)一个算法的空间复杂度大,则其时间复杂度也必定大 B)一个算法的空间复杂度大,则其时间复杂度必定小 C) ...

  2. 在ZYNQ上裸机跑ARM程序的演示

    今天给大家演示如何在ZYNQ上,裸机跑ARM程序,本测试用的是米尔Z-turn Board单板,测试代码用的XILINX官方的C语言测试程序,用于测试挂接在ARM总线上的设备是否正常,并在串口终端打印 ...

  3. 在ZYNQ上裸机跑ARM程序演示

    今天给大家演示如何在ZYNQ上,裸机跑ARM程序,本测试用的是米尔Z-turn Board单板,测试代码用的XILINX官方的C语言测试程序,用于测试挂接在ARM总线上的设备是否正常,并在串口终端打印 ...

  4. S5P4418裸机开发(二):LED点灯

    板子型号:友善之臂Smart4418 板子原理图:Smart-1608 S5P4418芯片手册:Pi2_SOC_DS_0.1.pdf 查看原理图: PDF中搜LED: 以LED1为例,连接引脚是W24 ...

  5. 【ARM裸机s5pv210 】程序烧录

    1.SD卡刷uboot 准备工作 (1)securcrt(115200,数据流控制全不选) (2)usb转串口驱动 (3)破坏iNand中的bootloader已从SD2启动 (4)九鼎x210_fu ...

  6. S5P4418裸机开发(十二):IRQ (按键中断) 串口中断

    S5P4418 64个中断源,按键的GPIO口是GPIOB28-30,中断号为54: Interrupt Controller相关寄存器 寄存器 功能 VICIRQSTATUS R,相关位为1表示该I ...

  7. 如何判断一段程序是否是裸机程序?

    在嵌入式MCU领域,一般将不移植操作系统直接烧录运行的程序称为裸机程序. 一般来说,非易失性存储,时钟,图形显示,网络通讯,用户I/O设备-都需要硬件依赖. 基于硬件基础,内存管理.文件系统.多线程调 ...

  8. 【程序】Marvell 88W8782/88W8801 WiFi模块创建或连接热点,并使用lwip2.1.3建立http服务器(20220213版)

    本程序所用的单片机型号为:STM32F103RE.STM32F407ZG或STM32H743ZI. 复位引脚(PDN)应连接到STM32F1/F4的PA15引脚或STM32H7的PE6引脚.不连接PD ...

  9. 【程序】Marvell 88W8801 WiFi模块创建或连接热点,并使用lwip2.1.2建立http服务器(20200208版)

    该程序是旧版本!最新版本为20220213版: https://blog.csdn.net/ZLK1214/article/details/122915474 本程序所用的单片机型号为:STM32F1 ...

  10. Linux下C程序的内存映像

    C程序的内存映像 代码段.只读数据段 数据段.bss段 堆 栈 文件映射区 内核映射区 OS下和裸机下C程序加载执行的差异 项目实际体会 系统分配栈的大小 任务分配栈的大小 代码段.只读数据段 1.对 ...

最新文章

  1. 使用Postman测试导入和导出excel
  2. 通过过滤器控制页面输出内容
  3. 用jquery调用wcf下的各种错误码的解释。
  4. 关于Jquery的parent和parents
  5. 深圳敏捷云计算机科技,敏捷云 | 关于我们 | 敏捷云
  6. jq使用教程02_安装的问题
  7. 要让人人能AI的百度EasyDL,现在怎么样了?
  8. 实例--[QSerialPort]串口通信_vortex_新浪博客
  9. 51nod 1256 扩展欧几里得
  10. UVA 993 Product of digits
  11. 【笔记】《编写高质量代码:改善c#程序的157个建议》-第1章 基本语言要素(SamWang)...
  12. pr中如何自定义序列尺寸
  13. android模拟器mac版本下载,天天模拟器for Mac-天天模拟器mac版下载 V1.0.7-PC6苹果网...
  14. ecshop mysql密码忘记_ECSHOP后台密码忘记了怎么办
  15. 树莓派——TSL2561获取光强数值(C语言)
  16. 漂亮的带搜索框蓝黄拼色网站404页面源码
  17. P3437 [POI2006]TET-Tetris 3D
  18. 英里 英尺 英寸的换算
  19. 【大数据】 大数据计算系统
  20. “万金油”的String,为什么不好用了?

热门文章

  1. 看电脑头痛计算机专业,看电脑头疼怎么回事
  2. 计算机软件专利安全期刊论文,安全与环境学报
  3. ImprovedGAN论文略读
  4. 明源售楼系统技术解析 房源生成(二)
  5. 我的中国“芯”——资深后端工程师成长分享——“胡”说IC工程师完美进阶
  6. matlab 读取midi,matlab miditoolbox中的midi文件生成函数的改进
  7. windows7 内部版本7601 此windows副本不是正版 ---解决方案
  8. Electron入门宝典(三)菜单快捷键
  9. 4.7 电源管理 第五部分 ---- Windows CE设备驱动开发之电源管理
  10. CSP模测(一)A卷