关闭
当前搜索:

uboot给Linux传参分析

Cmdline常用参数 格式简介 就是console=ttySAC2,115200 root=/dev/mmcblock0p2 rw init=/linuxrc rootstypes=ext3 就是这样的由很多个项目用空格隔开依次排列,每个项目中都是项目名等于 项目值 整个cmdline会被我们内核启动时解析,解析成一个一个的项目名 项目值的字符串 这些字符串又会被再次解析从而影响我...
阅读(7) 评论(0)

uboot前转

uboot 2种编译方法 (1)编译复杂项目,Makefile提供两种编译管理方法,默认情况下是当前文件夹中的.c文件编译出来的.o文件会放在同一文件夹下。这种方式就叫做原地编译。原地编译的好处就是处理起来简单。 (2)原地编译有一些坏处:1.污染了源文件目录,原来源文件里面只有.c .s文件,现在被污染了,有了很多.o文件,所以就会出现编译完了之后忘了清理,把它打包,就会特别大。2.一套源代...
阅读(20) 评论(0)

移植Uboot-2017(1)

移植uboot 2017-07到S5PV210上 1. 使用uboot源码里面本身有的代码的基础上进行修改    Arch/arm/cpu/arnv7这个目录    Board/samsung/goin 这个目录 2. 代码看了一下,第一阶段不用怎么改,但是我们需要调试知道我们运行到了哪一步,于是我们在Lowlevel_init.S下改了如下地方 在uboot的第一阶段上面加上 .wo...
阅读(31) 评论(0)

U-BOOT源码目录

uboot的源码目录分析; 各文件介绍 (1) . gitignore,这是个git的工具,git是一个版本管理工具。这个文件和git有关,和uboot本身无关的,不用去管 (2)  config.mk ,后缀是.mk,是一个makefile,将来在makefile中会去调用它 (3)MAINTAINERS 维护者,就是当前在参与维护uboot源码的社区工作者 (4)Makefi...
阅读(79) 评论(0)

Makefile学习

Makefile 1. 目标 目标就是我们要去make xxx的那个xxx,就是我们要生成的东西。 2 依赖 依赖就是生成目标的原材料 3. 命令 命令就是加工方法,所以make xxx的过程其实就是使用命令将依赖加工成目标的过程 通配符 %和makefile 自动推导(规则) (1) %号是我们makefile的通配符,代表一个或者几个字母        %.o就代表所有以....
阅读(67) 评论(0)

shell编程

Shell运行程序有多种方法,这里介绍3种方法 1.  ./xx.sh,和运行二进制可执行程序一样,这样运行shell要求shell程序必须有可执行权限。 2. Source xx.sh source是Linux一个命令,这个命令就是用来执行脚本程序的,这样运行不需要脚本具有可执行权限。 3. Bash xx.sh 这个bash你可以理解成脚本语言的解释器。本质上是一个可执行程序,这样执行相...
阅读(62) 评论(0)

uboot学习(1)

我们的异常向量表放在0地址处,如下图 这个地址就是这个地址,不是随便写的,如果说我的异常向量表要放在这个位置,说白了异常向量表是代码,意思是你这个代码就在0地址??但是打开我们的芯片数据手册的memory map章节,可以看到下图 这张图可以看出,0地址放的是IROM和IRAM,为什么要有这段地址,实际上是CPU把真正的IROM和IRAM映射到这里,因为系统已启动就在0地址找代...
阅读(73) 评论(0)

linux进程调度4

Linux可能运行在多核的环境下,Linux就会在这多个核直接负载均衡,每一个核跑的调度算法都是前面说的FIFO,RR,CFS。但是Linux会自动分布在多个核上,自动负载均衡。每个核都有可能把自己的tast_struct从自己的核推到旁边一个核,然后有一个核也可能把自己的推给旁边的,但是在Linux多核场景之下,每一个核都以劳动为乐,所以当别的核把任务推给它去跑的时候,他心里面很开心。它自己闲下...
阅读(104) 评论(0)

进程调度学习3

所有的操作系统在设计调度器的时候都追求两个目标中的一个,要么就是提高吞吐率,要么就是提高某些任务的相应,其实这两个目标之间有一定的矛盾,就像拔河的两个人一样,你往吞吐率这里多一点,响应就差一点,你往相应多一点,可能就牺牲吞吐率,什么是吞吐,就是我发一分钟去看这个linux,它把所有时间都用在解决负载,比如你有很多事情要做,你把时间花在有用功上,而不是无意义的上面,响应是指某些任务的响应要快,比如说...
阅读(69) 评论(0)

linux进程调度2

Fork前面创建的是一个进程,假设进程P1,调用fork之后,然后进程P2就被创建,P1是一个task_struct,p2也是一个task_struct,所以在内核里面这是两个task_struct,在内核的调度算法的层面上主要看到一个task_struct,他就会被调度,linux在P1刚刚把P2创建出来的时刻,linux会认为P1和P2之间会有某种内在的联系,前面有提到,task_struct...
阅读(70) 评论(0)

Linux进程调度学习1

当我们说进程的时候,就必然要说道线程,在Linux里面经典定义是 进程是一个支援分配的单位,所以,你搞清楚一个进程,就是搞清楚它的资源,当我们要说进程的时候,首先要说Linux里面是用一个什么样的数据结构去描述它 这是个process control block(进程控制块)这是OS里面通用的概念,在linux里面,进程控制块就是一个task_struct结构体 这个时候,我们应该怎么记住这...
阅读(77) 评论(0)

全程解析Linux鼠标驱动

/*  *  Copyright (c) 1999-2001 Vojtech Pavlik  *  *  USB HIDBP Mouse support  */ /*  * This program is free software; you can redistribute it and/or modify  * it under the terms of the GNU ...
阅读(60) 评论(0)

i2c适配器驱动程序

我们先来参考一下内核中自带的驱动程序,看看别人怎么写的 我们可以对内核进行make menuconfIg 看看它对应于哪一个文件 这里有个S3C2410 I2C Driver 然后按下H可以看到它依赖于那个配置 这里是依赖于我们的CONFIG_I2C_S3C2410这个配置的 我们在driver/i2c目录下搜索,CONFIG_I2C_S3C2410,看看它对应哪个文件...
阅读(103) 评论(0)

用户态访问I2C设备

显然内核里面有万能的驱动程序给我们用 看看内核文档 在\linux-4.8.14\Documentation\i2c下面的 这里有的dev-interface,这里面告诉了什么,我们来看看里面说了什么 通常,I2C设备由设备驱动来控制,但是他也可以提供用户空间直接访问适配器上的设备,通过/dev接口。你需要加载I2C-DEV模块 有个i2c-tools 的工具包帮你写好了接口,在网...
阅读(132) 评论(0)

分析内核源码,设备树

U-Boot需要将设备树在内存中的存储地址传给内核。该树主要由三大部分组成:头(Header)、结构块(Structure block)、字符串块(Strings block)。 设备树在内存中的存储布局图如下 1.1 头(header) 1.2 结构块(struct block)  扁平设备树结构块是线性化的树形结构,和字符串块一起组成了设备树的主体,以节点形式保...
阅读(157) 评论(0)

I2C设备驱动

以前我们的probe只打印,现在我们做一些有用的事情...
阅读(71) 评论(0)

I2C写设备端

先从第一步做起,怎么去注册一个设备。内核里面有个文档 这里有个instantiating-devices。这个文件的名字叫做实例化设备。 第一种方法 第一种方法通过总线设备来声明设备,这里有个例子,我们直接看源码方便一些 I2C_BOARD_INFO解析起来就是I2C单板信息。定义一个board_info结构体。I2C_BOARD_INFO("24c08",0x50...
阅读(170) 评论(0)

I2C

先来看一下原理图   这是个存储芯片。只用两跟引脚与CPU的I2C控制器相连,一个就是I2C_SCL一个就是I2C_SDA。CPU上的I2C_SCL和I2C_SDA上可以接很多芯片。每个芯片都会有个设备ID, 或者称为设备地址,去看芯片的原理图,里面都有设备的地址,比如说我们这里的FM24CL04。 I2C硬件协议 首先CPU会发出一个start信号,保持SCL为高电平,SDA由高变...
阅读(165) 评论(0)

驱动从PC指针分析段错误

我们将驱动程序故意改一句话  我们都知道寄存器要ioremap之后才能用。在驱动程序里面不能使用物理地址 或者对那种没有初始化指针的时候你操作也会出错。我现在故意引入这个错误 我们修改以前的LED代码用来说明 我们将以前的驱动程序改成下面这种 然后加载并运行测试程序 我们现在就根据这一大堆错我来找问题 [  181.105729] Unable to handle...
阅读(146) 评论(0)

JAVA中的包

Java中的包 名称冲突问题 C语言中所有的函数都是全局的,因此在多人合作的大型项目开发中,容易出现两个函数同名的情况 如 A完成的.c文件中有一个名字为compare的函数,B完成的.c文件中有名为compare的函数 C语言中一般是通过在函数名上加上前缀来解决名称冲突问题 JAVA中是不是也有类似的情况? 在JAVA里面也是有这个问题的 JAVA字节码文件 JAVA中的基本程序...
阅读(84) 评论(0)
94条 共5页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:15893次
    • 积分:1066
    • 等级:
    • 排名:千里之外
    • 原创:94篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    最新评论