u-boot-1.1.6 设置新分区支持设备树
在u-boot命令行执行mtaparts命令
mini2440 :> mtdparts
device nand0 <smdk2440-0>, # parts = 4
#: name size offset mask_flags
0: bootloader 0x00040000 0x00000000 0 // 256K
1: params 0x00020000 0x00040000 0 // 128K
2: kernel 0x00200000 0x00060000 0 // 2M
3: rootfs 0x0fda0000 0x00260000 0 // -
当使用高版本kernel或者BootLoader时发现编译出来的bin文件都很大, 加上设备树的支持, 现在重新规划分区
#: name size offset mask_flags
0: bootloader 0x00080000 0x00000000 0 // 512K
1: device_tree 0x00010000 0x00080000 0 // 64K
1: params 0x00010000 0x00090000 0 // 64K
2: kernel 0x00500000 0x000a0000 0 // 5M
3: rootfs 0x0fda0000 0x0085a0000 0 // -
需要修改的内容:
(1)文件系统分区
#define CONFIG_BOOTARGS "noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0" -> // rootfs分区offset变成了4
#define CONFIG_BOOTARGS "noinitrd root=/dev/mtdblock4 rw init=/linuxrc console=ttySAC0,115200"
(2)启动参数
原来启动执行bootm kernel
现在变成 bootm 0x30007FC0 - 0x32000000
其中0x30007FC0 是内核地址, 0x32000000 是设备树加载地址
#define CONFIG_BOOTCOMMAND "nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0" -> //
#define CONFIG_BOOTCOMMAND "nand read.jffs2 0x30007FC0 kernel; nand read.jffs2 32000000 device_tree; bootm 0x30007FC0 - 0x32000000"
(3)环境变量offset由0x40000 变成0xa0000
#define CFG_ENV_OFFSET 0x40000 ->
#define CFG_ENV_OFFSET 0xa0000
(4)MTDPARTS_DEFAULT
#define MTDPARTS_DEFAULT "mtdparts=nandflash0:256k@0(bootloader)," \"128k(params)," \"2m(kernel)," \"-(root)"
变成
#define MTDPARTS_DEFAULT "mtdparts=nandflash0:512k@0(bootloader)," \"64k(device_tree)," \"64k(params)," \"5m(kernel)," \"-(root)"
最后一点:u-boot怎么把device_tree传递给kernel呢?
由r2寄存器
内核启动时:
theKernel (0, bd->bi_arch_number, bd->bi_boot_params);
theKernel = (void (*)(int, int, uint))30008000);
三个参数分别是r0, r1, r2
原来这三个参数分别是
/*
* mov r0, #0
* ldr r1, =362 // machine-id
* ldr r2, =0x30000100
* mov pc, #0x30008000
*/
根据启动参数bootm 0x30007FC0 - 0x32000000
判断获取最后一个参数传递给r2,即可
在do_bootm_linux函数最后添加如下代码:
if (argc == 4) {of_flat_tree = (char *) simple_strtoul(argv[3], NULL, 16);if (be32_to_cpu(*(ulong *)of_flat_tree) == OF_DT_HEADER) {printf ("\nStarting kernel with device tree at 0x%x...\n\n", of_flat_tree);cleanup_before_linux (); theKernel (0, bd->bi_arch_number, of_flat_tree);} else {printf("Bad magic of device tree at 0x%x!\n\n", of_flat_tree);}}
添加头文件
#include <ft_build.h>
转载于:https://www.cnblogs.com/hulig7/p/9909416.html
u-boot-1.1.6 设置新分区支持设备树相关推荐
- android更新新应用_如何将应用转移到新的Android设备
android更新新应用 Ben Stockton 本·斯托克顿 A new Android device means transferring all of your content, includ ...
- Ubuntu下添加新分区并设置挂载点
Ubuntu下添加新分区并设置挂载点 最近在做Android项目,可是解压根文件系统以后,就报警说硬盘不够.当初设置使用的大小为15G.不过扩展分区还是很方便的.当然首先你得设置添加使用的硬盘大小,这 ...
- linux新建挂载目录命令,告诉你Ubuntu添加新分区并设置挂载点的方法及命令
最近在Ubuntu下做Android项目,可是解压根文件系统以后,就报警说硬盘不够.当初设置使用的大小为15G.不过扩展分区还是很方便的.当然首先你得设置添加使用的硬盘大小,这次我一下提高到了30G, ...
- 【批处理DOS-CMD命令-汇总和小结】-磁盘管理和修复、磁盘和分区属性的管理、设置隐藏分区卷(convert、diskpart、chkdsk)
一.磁盘格式转换命令--convert 打印convert命令的帮助信息 如果想要将c盘从fat转到ntfs,可以执行命令[convert c:/fs:ntfs]. 二.磁盘或分区管理--diskpa ...
- 联想y7000p 2019 安装ubuntu20.04 双系统 设置efi分区
2022/11/20 联想y7000p 2019 安装ubuntu20.04 双系统 设置efi分区 第一次安装ubuntu就出了非常多的错误,问题就出在没有efi分区.我装了三天,本来都要放弃,就用 ...
- AndroidQ(10.0) MTK平台添加新分区
65 平台增加一个新分区,用于保存特殊数据,修改文件列表如下 modified: build/make/core/Makefilemodified: build/make/core/config.mk ...
- 计算机里有个不能进入的磁盘分区,新电脑只有一个分区怎么办? 教你们如何不进pe给硬盘创建新分区!...
很多朋友新电脑刚买回来打开发现明明自己机械硬盘1T或者1T机械加128G固态,但是却只有一个或者两个分区,但是又不会分区 现在教大家如何不用老毛桃大白菜之类的进pe系统里面就能直接创建新分区 1 Wi ...
- html5怎么创建列分区,使用分区助手创建新分区
相信在您见过的电脑上一般都会把磁盘分成:电影.音乐,工具--等盘吧!这样子把磁盘上的内容分门别类存贮起来,条理清晰,便于管理,找起来也容易.那么您想不想再创建一个新的分区,专门用于装同一类的东西呢?例 ...
- 计算机只有一块硬盘分区,如果新计算机只有一个分区怎么办?教您如何在不输入pe的情况下为硬盘创建新分区!...
许多朋友刚买了一台新计算机并打开它,发现他们的机械硬盘1T或1T机械加128G固态硬盘,但是只有一个或两个分区,但是它们不会分区 现在教您如何在不进入pe系统的情况下直接创建新分区,例如旧的毛桃大白菜 ...
最新文章
- python json
- javaweb里边的重定向与转发的区别
- 重构,还是重写?(2020版)
- python标准库和第三方库_python常用标准库及三方库
- 点在多边形内算法,C#判断一个点是否在一个复杂多边形的内部
- shell编程之简单四则运算及数组定义
- iOS网络请求安全认证(JWT,RSA)
- java过滤器如何操作数据库_jsp – 使用Java中的过滤器验证用户名,密码(与数据库联系)...
- 安卓系统双屏异显_Android实现双屏异显
- GitHub开源项目:用于构建接入网络和模块化网络服务的平台
- Rust笔记1 rust基本概念
- 计蒜客---N的-2进制表示
- Nmap发现局域网中存活主机
- 微擎小程序PHP,微擎配置小程序教程
- 输入球心三维坐标及球半径求算球体的球面坐标数据(C/C++)
- 第52届格莱美大奖完全获奖名单
- React-微信网页开发总结
- Good Ticket(深搜)
- Parallels Desktop | 在 Mac 里装 Windows 的最佳工具。
- sqldbx mysql 乱码_sqlDbx连接mysql 及乱码
热门文章
- First update-【计算机方面的权威外文数据库(全)】
- Java的基础方法Java的对象_java基础之 创建对象的几种方式
- 单片机检测stc没反应_STC 核心板 入门记 - 你好我叫郑某人
- android wear升级方法,LG G Watch官方工具包刷Android wear5.1.1教程(附刷机包)
- mysql world.sql.zip_安装mysql数据库zip版|mysqlzip
- 网络推广营销教大家有关移动端网站优化更受用户欢迎的技巧!
- 网络营销——网络营销专员浅析网站推广营销关键词是重点
- 网站推广——站长助力创业期企业网站优化推广的好选择
- 网站推广的三大基本方式
- python数据分析numpy_利用python进行数据分析-NumPy高级应用