关键词:bootrom.spl.uboot.linux.mksheader.sb_header.mkimage.image_header_t等等. 首先看一个典型的bootrom->spl->uboot->linux流程log,主要分为4个部分,中间有3个衔接点. # Hello DeepEye -- Boot from SD card -- sdio initialize done. sd card read done. --------------------------------…
背景 上一讲我们完成了 编译 QEMU 以及简单地做了仿真.这一讲在 启动uboot 的基础上进行,以加强对于 运行地址,加载地址等理解. 有关资料: uboot 与 代码重定位 有这样的约定,uboot正常运行的模式称为自主模式:倒计时被中断以后的交互模式称为下载模式. 在Uboot中加载内核与设备树一般通过网络(tftp).读存储介质(sd卡\usb等)以及仿真器等方式. uboot通过tftp加载uImage uboot通过sd卡加载uImage uboot通过tftp加载uImage 为…
驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) 文档里写道: Uboot.lds文件中起始地址是0x00,但是config.mk中的TEXT_BASE是0x57e00000,但是生成的uboot反汇编文件中,为什么start.s的第一条指令地址也是0x57e00000?不应该是0x00么?因为start.s的加载地址和运行地址都是0x00啊!? 答:Ubo…
当初看这源码的目的是: 1.treegrid是怎么实现逐级加载树结构的. 解: 见demo,主要就是点击节点的时候会请求后台. 2.treegrid加载后,第二次展开节点会不会再次请求后台. 解:第二次展开节点不会再请求后台. 没记错的话,貌似是第一次点击节点 –> 请求后台 –> 根据响应的数据构建div,形成树结构. 再第二次点击的时候:点击节点所在的div的下一个同级div的class是tr.treegrid-tr-tree的话,表示已加载过其子节点数据.则不需要再次请求后台. 3.对j…
无论是Linux还是Windows,在加电后的第一步都是先运行BIOS(Basic Input/Output System)程序——不知道是不是所以的电脑系统都是如此.BIOS保存在主板上的一个non-volatile(即非易失)存储器,如PROM,EPROM,Flash等.——以前的BIOS一般都是只读的,现代的系统中,允许刷新BIOS程序.它的任务就是简单的初始化和识别系统硬件设备,如CPU,内存,输入/输出设备,外部存储设备等.然后找到bootloader的位置,并加载bootloader…
linux加载配置项时通过下面方式 首先 加载/etc/profile配置 然后 加载/ect/profile.d/下面的所有脚本 然后 加载当前用户 .bash_profile 然后 加载.bashrc 最后 加载 [/etc/bashrc] /etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~/.bashrc → [/etc/bashrc]…
转自:http://blog.chinaunix.net/uid-22028680-id-3157922.html 1.request_firmware在内核使用,需要文件系统支持,就是说,启动的时候如果在驱动里面的probe函数调用 request_firmware ,那么系统将等待30s左右,因为文件系统还没有挂载,当然找不到固件了,所以最好在中断里面启动tasklet,然后request_firmware .如果不想等待,就用request_firmware_nowait,好像是这样写的.…
假设要加载的驱动程序模块名为SHT21.ko 加载驱动模块 方法一:  进入SHT21.ko驱动模块文件所在的目录,然后直接  insmod SHT21.ko  即可 方法二:  将SHT21.ko文件拷贝到/lib/module/#uname -r#/目录下,这里,#uname -r#意思是,在终端中输入  uname -r后显示的内核版本及名称,例如mini2440中#uname -r#就是2.6.32.2-FriendlyARM. 然后  depmod(会在/lib/modules/#un…
在Linux C中动态加载.so文件用dlopen("libdemo.so", RTLD_NOW); 但是默认的so搜索目录不包括当前程序目录,所以必须复制到系统的so目录 才能运行 不然就会出现./hook: error while loading shared libraries: libdemo.so: cannot open shared object file: No such file or directory 要解决这个问题 只需要在编译的时候指定-fPIC -rdyna…
2015-01-06 10:29:13   目录 1 开机加载简介 2 常规加载流程 2.1 加载BIOS 2.2 读取MBR 2.3 boot loader 2.4 加载内核 2.5 init依据inittab文件来设定运行等级 2.6 init进程执行rc.sysinit 2.7 启动内核模块 2.8 执行不同运行级别的脚本程序 2.9 执行/etc/rc.d/rc.local 2.10 执行/bin/login程序,进入登录状态 3 环境变量加载 3.1 加载顺序说明 开机加载简介 开机过…
到目前, 我们的讨论已来到一个模块加载的重要方面: 竞争情况. 如果你在如何编写你的 初始化函数上不小心, 你可能造成威胁到整个系统的稳定的情形. 我们将在本书稍后讨论 竞争情况; 现在, 快速提几点就足够了: 首先时你应该一直记住, 内核的某些别的部分会在注册完成之后马上使用任何你注册的设 施. 这是完全可能的, 换句话说, 内核将调用进你的模块, 在你的初始化函数仍然在运行 时. 所以你的代码必须准备好被调用, 一旦它完成了它的第一个注册. 不要注册任何设施, 直到所有的需要支持那个设施的你…
windows: LoadLibraryA 指定的可执行模块映射到调用进程的地址空间并返回该 DLL 的句柄 HMODULE LoadLibraryA( LPCTSTR lpLibFileName//模块的的的名字 ) GetProcAddress 函数被用来检索在DLL中的输出函数地址 FARPROC GetProcAddress( HMODULE hModule, // DLL模块句柄 LPCSTR lpProcName // 函数名 ); Linux: dlopen 打开一个动态链接库,并…
SPL,PHP 标准库(Standard PHP Library) ,此从 PHP 5.0 起内置的组件和接口,并且从 PHP5.3 已逐渐的成熟.SPL 其实在所有的 PHP5 开发环境中被内置,同时无需任何设置.似乎众多的 PHP 开发人员基本没有使用它,甚至闻所未闻.究其原因,可以追述到它那阳春白雪般的说明文档,使你忽略了「它的存在」.SPL 这块宝石犹如铁达尼的「海洋之心」般,被沉入海底.而现在它应该被我们捞起,并将它穿戴在应有的位置 ,而这也是这篇文章所要表述的观点.那么,SPL 提供…
修改内核启动顺序:1.查看当前系统所有的内核# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg0 : CentOS Linux (4.4.186-1.el7.elrepo.x86_64) 7 (Core)1 : CentOS Linux (3.10.0-957.21.3.el7.x86_64) 7 (Core)2 : CentOS Linux (0-rescue-0ea734564f9a…
错误: rmmod 时提示 rmmod: chdir(xxx): No such file or directory 解决方法: http://blog.csdn.net/luckywang1103/article/details/48734209…
链接库时的搜索路径顺序:LD_LIBRARY_PATH --> /etc/ld.so.conf --> /lib,/usr/lib 方法1. vi .bash_profile    设置环境变量LD_LIBRARY_PATH并导出 另: LD_LIBRARY_PATH:启动时连接共享函数库,执行时打开动态函数库首先搜索的路径. LD_DEBUG:显示运行时的信息,如符号寻找和绑定,重定向,执行等等. 方法2.  a)直接在/etc/ld.so.conf 里添加库路径 b)新建文件,后缀为.co…
1. init #!/bin/busybox ash#load modules mao 2013-02-16 14:12:48 echo "************************mao***********************************"insmod /lib/modules/ftmac100.koifconfig eth0 192.168.253.99 ifconfiginsmod /lib/modules/fcap0.koinsmod /lib/modu…
前言 对于 GRUB 的加载流程,网上绝大部分都是写对 menu.lst, grub.cfg 这些 GRUB 配置文件的编写流程,就像是写脚本语言一样,用些关键字就能让 PC机能正确启动桌面 Linux 了.但这只是 GRUB 的使用,而不是GRUB的分析. 本来是没有想要探究 GRUB 的想法,直到我在自制toy kernel 的学习中进入了 "虚拟内存管理"这一章节.很多介绍虚拟内存管理的时候都会说到 linux 的内存管理,linux 内核会加载到系统 3G-4G 的虚拟内存中,…
一.目的 本文主要讲述linux3.10文件系统初始化过程的第二阶段:加载initrd. initrd是一个临时文件系统,由bootload负责加载到内存中,里面包含了基本的可执行程序和驱动程序.在linux初始化的初级阶段,它提供了一个基本的运行环境.当成功加载磁盘文件系统后,系统将切换到磁盘文件系统并卸载initrd. 如果是嵌入式设备,那么最终的文件系统就是initrd. 二.cpio文件格式 initrd常用的的文件格式是cpio,cpio格式记录了文件系统的结构和内容. cpio格式具…
一.目的 linux把文件分为常规文件.目录文件.软链接文件.硬链接文件.特殊文件(设备文件.管道文件.socket文件等)几种类型,分别对应不同的新建函数sys_open().sys_mkdir().sys_symlink().sys_link().sys_mknod(). 系统初始化阶段成功加载initrd后,调用这些接口函数创建各种文件,因此这些函数在linux文件系统初始化过程中起到了重要作用,本文将详细描述这些接口函数的实现过程. 这些接口函数主要在fs/namei.c.fs/open…
问题: 1. 把编译好的模块放到板子/lib/modules对应文件夹下,并且执行了depmod -a, 比如pl2303.ko, 那么下一次插入pl2303的串口线,是否可以识别,也就是自动加载pl2303驱动? -------------------------------------------------------------------------------------------------------------- 转自:http://blog.csdn.net/hunanch…
来自:http://blog.csdn.net/allen6268198/article/details/12905425 A10/A20 Bootloader加载过程分析 注:由于全志A10和A20在加载Bootloader过程方面基本一致,下面仅以A20叙述,但同时也适用于A10.另外在不需要区分Cubieboard1和Cubieboard2的情况下,统称为Cubieboard:另现在市面上一般所说的SD卡即为Micro SD Card,也就是TF卡,为区别于一般传统的SD卡,本文一般使用T…
原文 : http://blog.csdn.net/allen6268198/article/details/12905425 从这里开始:http://linux-sunxi.org/Bootable_SD_card 代码仓库:https://github.com/linux-sunxi A10/A20 Bootloader加载过程分析 注:由于全志A10和A20在加载 Bootloader过程方面基本一致,下面仅以A20叙述,但同时也适用于A10.另外在不需要区分Cubieboard1和Cu…
如果要做嵌入式Linux,我们首先要在板子上烧写的往往不是kernel,而是u-boot,这时需要烧写工具帮忙.当u-boot烧写成功后,我们就可以用u-boot附带的网络功能来烧写kernel了.每当板子上电时,u-boot一般会被加载到内存的前半段,如果我们的kernel之前就已经被烧写到开发板了,那么u-boot会加载kernel到内存的后半段并跳转到kernel的起始地址处执行(或者直接跳转到kernel的起始地址处执行,如果kernel可以直接在flash上执行的话.) 如上图所示,绿…
在不考虑他们的工作或专业情况下,所有 Linux 用户都会使用的是哪个工具?引导加载程序.通过本文了解引导加载程序的工作原理,认识两个流行的引导加载程序 LILO(LInux LOader)和 GNU GRUB(GRand Unified Boot loader), 并研究两者各自的优点和缺点. 什么是引导加载程序? 最简单地讲,引导加载程序(boot loader) 会引导操作系统.当机器引导它的操作系统时,BIOS 会读取引导介质上最前面的 512 字节(即人们所知的 主引导记录(maste…
原文链接:CentOS 加载/挂载 U盘 Linux如何加载(优)U盘 1,以root用户登陆    先加载USB模块 modprobe usb-storage    用fdisk -l 看看U盘的设备    假如U盘是sda1 2,确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令:mkdir /mnt/usb_disk,成功后进行下一步. 3,载入 u 盘,需键入以下命令:mount  /dev/sda   /mnt/usb_disk 成功后,即可使用 u 盘了,…
Linux 内核启动及文件系统加载过程 当u-boot 开始执行 bootcmd 命令,就进入 Linux 内核启动阶段.普通 Linux 内核的启动过程也可以分为两个阶段.本文以项目中使用的 linux-2.6.37 版源码为例分三个阶段来描述内核启动全过程.第一阶段为内核自解压过程,第二阶段主要工作是设置ARM处理器工作模式.使能 MMU .设置一级页表等,而第三阶段则主要为C代码,包括内核初始化的全部工作. 一. Linux 内核自解压过程 在 linux 内核启动过程中一般能看到图1内核…
(一)LED点灯调试 FL2440电路总共有4个LED0,LED1,LED2,LED3,分别接到板子GPB5,GPB6,GPB8,GPB10引脚.通过设置三个寄存器GPBCON(0x56000010),GPBDAT(0x56000014),GPBUP(0x56000018),控制GPB[10:0]引脚可控LED的亮灭. 控制LED亮灭有三步: 1,设置GPB5,GPB6,GPB8,GPB10为输出工作方式,即GPBCON [21:20]  = 01 GPBCON [17:16]  = 01,GP…
引入设备树后bootloader加载DTB方法: 1. 标准方法 将linux kernel放到内存地址为<kernel img addr>的内存中. 将DTB放到地址为<dtb addr>的内存中. 在u-boot下通过下面的命令启动内核: bootm <kernel img addr> – <dtb addr> 2.兼容方法 配置内核CONFIG_ARM_APPENDED_DTB选项,将DTB放到紧跟内核后面的地址. 具体方法如下: 1)将DTB放到内核…