一步步玩pcDuino3--mmc下的bootloader
pcDuino3下支持mmc启动。官方的Uboot是採用SPL框架实现的,由于内部的SRAM空间达到32K,我们全然能够在这32K空间内编写一个完整可用小巧的bootloader来完毕引导Linux kernel的目的。
我们首先介绍下SPL框架,能够先看下《GNU ARM汇编--(十八)u-boot-採用nand_spl方式的启动方法》和《GNU
ARM汇编--(十九)u-boot-nand-spl启动过程分析》。NAND_SPL也算是SPL框架下的一种模式。
当使用Nand flash或者MMC作为引导方式时,我们须要使用芯片内的ROM或者其他机制载入固件到SRAM中。
这样的时候就须要SPL,由于SPL短小精悍,适用于4K甚至更小的SRAM的环境。这时候的引导过程就变成。SPL引导Uboot。而由Uboot引导系统内核。
事实上作为pcDuino3的SPL,它是能够完毕直接引导kernel功能的,假设不须要使用uboot提供的额外的强大功能的话。
这里介绍下写bootloader的思路:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG5keGhlag==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
使用mmc的read驱动函数将指定位置的kernel镜像读取到内存中。然后依照Linux的要求完毕參数列表的传递,MMU和cache的配置等,就能够完毕跳转动作了。
最后一个步骤的代码例如以下:
void boot_linux(void)
{
uart_printf("boot linux\n");
void (*kernel_entry)(int zero, int arch, uint params);
unsigned long r2;
unsigned long machid; setup_linux_param(0x40000000 + 0x100); cleanup_before_linux();
kernel_entry = (void (*)(int, int, uint))0x48000000; machid = 4283;
r2= 0x40000100;
kernel_entry(0, machid, r2); }
这个函数就完毕了内核文档Documentation/arm/booting对booting ARM Linux的描写叙述。
这样,一个唯独18K大小的bootloader就能够完毕对kernel的引导了。
一步步玩pcDuino3--mmc下的bootloader的更多相关文章
- 一步步玩pcDuino3--mmc下的裸机流水灯
第一部分是玩pcduino3下的裸机.这个过程能够让我们更好的理解嵌入式系统,熟悉我们使用的这个平台. 首先介绍下开发环境: 虚拟机:VMware® Workstati ...
- 一步步玩pcDuino3--uboot下的ping,加入命令能够接受来自host的ping
uboot是一个很优秀的开源项目.不只能够学习bootloader.嵌入式,各种总线协议. 还能够了解网络协议栈.在嵌入式开发中,常常使用uboot的tftp和nfs来加快开发的效率.那么在tftp能 ...
- 玩转 H5 下拉上滑动效果
在APP中我们经常会在页面下拉时看到一些动效,例如下拉图片跟随放大.下拉刷新出现loading动画等,这个交互细节在各个主流APP以及手机原生系统中随处可见,能为APP增添个性亮点. 一.背景 在我们 ...
- 玩转 H5 下拉上滑动效
按照上面的技术方案实施,具体过程为: 禁用页面顶部下拉事件 ------> 将页面的主体内容用一个DIV容器包含起来,同时复制需要放大处理的内容节点至主体内容之外 ------> 绑 ...
- 玩转 HTML5 下 WebGL 的 3D 模型交并补
建设性的立体几何具有许多实际用途,它用于需要简单几何对象的情况下,或者数学精度很重要的地方,几乎所有的工程 CAD 软件包都使用 CSG(可以用于表示刀具切削,以及零件必须配合在一起的特征).CSG ...
- 26数据查询的各种小玩法-select 下(必学)-天轰穿sqlserver视频教程
大纲:简单查询-选择数据列,使用字符串,改变列标题,使用数据运算,使用ALL语DISTINCT关键字,使用TOP关键字,排序 优酷超清地址,为了冲优酷的访问量,所以这里只放优酷的地址了,其实其他网站还 ...
- 你真的会玩SQL吗?玩爆你的数据报表之存储过程编写(上)
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- 自己用C语言写单片机PIC16 serial bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 为什么自己写bootl ...
- Bootloader的原理以及实现(转载)
BootLoader工作原理 BootLoader工作原理 BootLoader指系统启动后,在操作系统内核运行之前运行的一段小程序.通过BootLoader,我们可以初始化硬件设备.建立内存空间的映 ...
随机推荐
- 【转】Java 集合系列09之 Map架构
概要 前面,我们已经系统的对List进行了学习.接下来,我们先学习Map,然后再学习Set:因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过 ...
- P1538 迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
- (转)Vue 爬坑之路(四)—— 与 Vuex 的第一次接触
在 Vue.js 的项目中,如果项目结构简单, 父子组件之间的数据传递可以使用 props 或者 $emit 等方式 http://www.cnblogs.com/wisewrong/p/62660 ...
- Android基础TOP3:Activity的线性,相对,帧和表格布局的概括
线性布局 LinearLayout: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...
- [Windows Server 2008] Ecshop安全设置
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:ECSHO ...
- java实例1
1.满天星星 import java.awt.*; public class xinxin { public static void main(String[] args) { Frame w = n ...
- 自己写一个爬虫 copider
copider 模仿scrapy的一些写法,当然我这个是单进程的,不是异步的 1.目录 copider/copider.py #coding=utf-8 ''' Created on 2015年10月 ...
- AcDbTable 类
Table 例子学习笔记在这个例子中,ARX向我们展示了ACDBTABLE类的一些基本操作方法,ACDBTABLE类是ACAD2005及其以后的产品,应该是说ACDBDATATABLE的升级产品,Ac ...
- H5 应用程序缓存(离线缓存)
离线缓存这个功能的实现有以下步骤: 1,以nginx做web服务器为例,在mime.types文件中添加一行:text/cache-manifest manifest,作用是为了让服务器识别该 ...
- Sending Secret Messages LightOJ - 1404
Sending Secret Messages LightOJ - 1404 Alice wants to send Bob some confidential messages. But their ...