裸机——210SD卡启动
1.通过阅读iROM_Application_note可以获取关于启动的全部信息
2.记录下代码
制作SD卡启动的代码,即添加校验和的
#include <strings.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/stat.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define BL1SIZE (16*1024) #define HEADSIZE (16) static void sys_err(char *str) { perror(str); exit(); } int main(int argc, char **argv) { ) { printf("format: a.out [infile] [outfile]\n"); ; } int fd; ], O_RDONLY)) < ) sys_err("open"); ; , SEEK_END)) < ) sys_err("lseek"); , SEEK_SET)) < ) sys_err("lseek 2"); ; char *newfile = NULL; if (filesize < BL1SIZE) { newfilesize = BL1SIZE + HEADSIZE; } else { newfilesize = filesize + HEADSIZE; } if ((newfile = (char *)malloc(newfilesize)) == NULL) sys_err("malloc newfile"); bzero(newfile, newfilesize); int ncount; ) sys_err("read err"); if (ncount != filesize) { printf("read err 2\n"); exit(); } ; char *getsum = newfile + HEADSIZE; unsigned , count = ; for (; count < BL1SIZE - HEADSIZE; count++) { sum += getsum[count] & 0xff; } *(unsigned int *)checksum = sum; int newfd; ], O_WRONLY | O_CREAT | O_TRUNC, )) < ) sys_err("open outfile"); ) sys_err("write outfile"); if (ncount != newfilesize) { printf("write outfile err\n"); exit(); } ; }
使用 dd 命令,将SD卡启动代码拷贝到 SD 的 block1
#/bin/sh sudo dd iflag=dsync oflag=dsync
使用iROM中的库将SD卡中的代码考到DDR上
typedef unsigned int bool; typedef bool (*pfunc_t) (int , unsigned int , unsigned short, unsigned int* , bool ); /** * This Function copy MMC(MoviNAND/iNand) Card Data to memory. * Always use EPLL source clock. * This function works at 20Mhz. * @param u32 StartBlkAddress : Source card(MoviNAND/iNand MMC)) Address.(It must block address.) * @param u16 blockSize : Number of blocks to copy. * @param u32* memoryPtr : Buffer to copy from. * @param bool with_init : determined card initialization. * @return bool(u8) - Success or failure. */ #define channel 2 #define StartBlkAddress 1 #define blockSize 50 #define memoryPtr 0x20000000 #define with_init 0 void sd_relcate() { pfunc_t pfunc = (pfunc_t)(*(unsigned int *)0xD0037F98); if (!pfunc(channel, StartBlkAddress, blockSize, memoryPtr, with_init)) printf("sd_relcate err\n"); else printf("sd_relcate success\n"); }
在汇编中,使用长跳转,跳转到DDR上的main
bl sdram_asm_init bl sd_relcate ldr sp, =0x2E000000 // 在DDR上重新设置栈 ldr pc, =main
裸机——210SD卡启动的更多相关文章
- 不从SD卡启动树莓派2
本文你可以学到: berryboot使用,kali安装,开挂的MobaXterm,以及关于通过LABEL和UUID挂载的小技巧. 本文默认你有一定Linux基础,同时针对刚入门的水平,因为这是我的折腾 ...
- am335x sd卡启动开启识别emmc kernel 上的改动
sbc 7109-454 sd 卡启动qt系统后一直识别不了 emmc 也就是mmc1口, 一开始以为是硬件初始化的问题,后面又以为是io口复用,最后才知道是根本没有注册mmc1设备. 更改下面的代 ...
- am335x sd卡启动系统参数设置
首先直接记录结果 在u-boot 中修改参数 #define AUTO_UPDATESYS */ 直接把这个参数注释掉. 这个参数是原来用来升级nor flash 启动系统设置的一个参数,也就是说, ...
- Samsung_tiny4412(驱动笔记01)----linux 3.5,U-Boot,Busybox,SD卡启动环境搭建
/*********************************************************************************** * * linux 3.5,U ...
- Exynos4412从SD卡启动的简单网络文件系统制作
Exynos4412从SD卡启动的简单网络文件系统制作 1. 简介 嵌入式系统能够在开发板上正常运行,需要先进行系统配置,一个完整的嵌入式系统应该包含的几个部分::uboot,kernel,rootf ...
- 制作SD卡启动自己编译的uboot.bin
README for FriendlyARM Tiny4412 -----------------------------------------------------1. Build uboot ...
- [i.MX6q]i.MX6q处理器,linux操作系统平台搭建 从SD卡启动系统
转自:http://www.07net01.com/linux/2016/02/1232094.html 参照1:http://blog.csdn.net/girlkoo/article/detail ...
- imx6 android SD卡启动
工作中需要将imx6的android系统从SD卡启动,所以就分析了MfgTool中的脚本,分析android的分区情况,并尝试自己操作,竟然成功了,记录于此. 参考文档 http://www.kanc ...
- ZYNQ的Linux Linaro系统镜像制作SD卡启动
ZYNQ的Linux Linaro系统镜像制作SD卡启动 0. 概述 ZYNQ生成uboot的时候和正常的ARM设备不太一样,ZYNQ属于二次辅助启动uboot然后由uboot启动内核,大概意思就是 ...
随机推荐
- April 14 2017 Week 15 Friday
Try to be a rainbow in someone's cloud. 当乌云萦绕心头,我愿意成为你的彩虹. Actually there are many rainbows in our l ...
- Fiddler-1 官网下载及安装
1 进入Fiddler官网:http://www.telerik.com/fiddler 点击[Free download]:填写一些信息后就可以下载. 2 双击安装包--下一步dinghanhua下 ...
- 【JavaScript 封装库】BETA 4.0 测试版发布!
/* 源码作者: 石不易(Louis Shi) 联系方式: http://www.shibuyi.net =============================================== ...
- 问答 请问使用OK("raw:jpg")能返回多张图片吗
请问使用OK("raw:jpg")能返回多张图片吗 发布于 28天前 作者 qq_3aeeb0ad 78 次浏览 复制 上一个帖子 下一个帖子 标签: 无 @At( ...
- Eclipse Python插件 PyDev
PyDev for Eclipse 是一个功能强大且易用的 Eclipse Python IDE 插件.本文将向读者介绍 PyDev 开源项目及其安装配置方法,并在此基础上详细介绍如何利用 PyDev ...
- Linux(二) - Unix&Linux 基本概念
主机 = 内核 + 实用工具 内核(kernel) 当计算机启动时,计算机要经历一系列动作,这些动作构成了引导过程.引导过程的最后一个动作是启动一个非常复杂的程序,该程序就被称为内核(Kernel) ...
- numpy+pandas+matplotlib+tushare股票分析
一.数据导入 安装tushare模块包 pip install tushare http://tushare.org/ tushare是一个财经数据接口包 import numpy as np imp ...
- B3942 Censoring
爆炸入口 有一个S串和一个T串,长度均小于1,000,000,设当前串为U串,然后从前往后枚举S串一个字符一个字符往U串里添加,若U串后缀为T,则去掉这个后缀继续流程. 这道题确乎是个很好的联系kmp ...
- 【洛谷P1962】斐波那契数列
斐波那契数列 题目链接:https://www.luogu.org/problemnew/show/P1962 矩阵A 1,1 1,0 用A^k即可求出feb(k). 矩阵快速幂 #include&l ...
- Java中的return this
return this就是返回当前对象的引用(就是实际调用这个方法的实例化对象) 示例: /** * 资源url */ public HttpConfig url(String url) { urls ...