徒手写uboot_1
来源:互联网 发布:mac 硬盘隐藏文件 编辑:程序博客网 时间:2024/05/01 21:39
相信大家在使用Source Insight的时候曾经遇到过输入大括号会自动缩进的情况,
现有一方法可以关闭Source Insight的这个自动缩进的方法:
1.打开Options - Document Options,打开界面如下图
2.点击 Auto Indent,界面如下
3.将Smart Indent Options中的两项取消,即可实现类似VC++上的自动调整功能。这样就省去了我们手动将缩进去掉的麻烦。
将Auto Indent Type选择为“Simple”则可以使按回车后每行自动缩进和上一行对齐
将Auto Indent Type选择为“None”则每次回车后,不会进行任何缩进
看了韦东山老师的视频, 竟然自己写了一个uboot并启动内核成功. 很是震撼决定记录该过程, 决心拿下u-boot移植!
上图以简要的方式设置参数来说明参数设置及跳转的过程
在uboot启动第二阶段, 设置内核启动参数的时候, setup_cmdline_tag()中, 字符串要4字节对齐, 韦老师推荐 +3 而不是用uboot中的 +4 , 这里有什么意义么?
/* 2. 设置参数*/
/* 2.1 设置tag起始信息*/
setup_start_tag();
/* 2.2 设置memory_tag, 告诉内核: 内存从哪里开始, 有多大*/
setup_memory_tag();
/* 2.3 设置commandline_tag, 设置命令行参数*/
setup_commandline_tag();
/* 2.4 设置tag终止信息*/
setup_end_tag();
/* 3. 跳转执行*/
thekernel = (void (*)(int, int, unsigned int))0x30008000;
thekernal(); //等同于汇编的 mov pc, #0x30008000
在 thekernel 指针指向的函数, 有三个形参: 第一个 0 . 第二个表示 单板的类型代号(机器ID) . 第三个表示 启动参数的存放地址(就是start_tag中设置的起始位置) 0x30000100 .
1. nand_read(unsigned int, unsigned char *; unsigned int); 这里是将nand中的数据读取到sdram中, 这里nand的地址(源地址)一般是用一个整型数据来表示的, 而读取到目的地址在sdram上,可以用char *来表示
2. 打开uboot.dis文件可以查看反汇编,如果代码有误, 可以通过查看反汇编来找到原因
2.1 33f8005c: e59f2058 ldr r2, [pc, #88] ; 33f800bc <sdram_cfg_val+0x44> , 由这条汇编知道33f800bc出存放的是_bss段的开始位置,也就是用这个值减去0x33f80000就是生成的bin文件的大小,
3. nand_read的时候 col = src % 2048
改进:
1. 提高cpu频率,200MHz提升到400MHz
2. 启动ICACHE, DCACHE必须要开了mmu之后才能使用icache 是在cpu的内部的, 而程序是在sdram中的, 如果不用icache的话, cpu每次都要去访问sdram, 如果启用了icache, 每次拿出多条指令, 如果cpu在icache中找到需要的指令就不需要再去访问sdram, 大大缩短了取指时间
- 徒手写uboot_1
- 徒手写一个java日历程序
- latex徒手写论文之小白篇
- Linux内核之——C语言“徒手”写内存!
- Uboot_1.1.6ReadMe翻译
- 每个人都能徒手写递归神经网络–手把手教你写一个RNN
- 徒手从零开始,使用netbeans和对象持久化,写一个典型的数据库应用程序
- html table宽度设置,本篇方法成功解决了我徒手写html的问题
- 反射与泛型--徒手教你写个Android数据库Dao层玩玩
- IOS 学习之路(一) 徒手写界面(1)
- IOS 学习之路(一) 徒手写界面(2)自适应和懒加载
- IOS 学习之路(一) 徒手写界面(3)使用框架
- IOS 学习之路(一) 徒手写界面(4)控件(1)
- IOS 学习之路(一) 徒手写界面(4)控件(2)Label
- 如何利用opencv c++徒手写BP神经网络识别数字(一)前言及准备
- 徒手hypervisor
- 看了某只这东西写了150+行不太开心,于是徒手撸了33行代码(C++)
- uboot_1.1.6源码分析——第一阶段
- Hibernate执行SQL语句实现
- 高性能计算技术展望
- 58同城2014校园招聘软件测试笔试题
- 以android实际开发为背景整理学习资料
- monit: error connecting to the monit daemon
- 徒手写uboot_1
- 最热门的4大Java正则表达式
- C语言 floor函数 ceil函数
- mysql 导入导出数据库以及函数、存储过程的介绍
- MapReduce:详解Shuffle过程
- C/C++笔试面试常见问题1
- 将LED驱动增加进内核的方法
- FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.解决办法
- svn merge