Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
printk()和printf()的比较
1 前言 print函数和printf函数是对孪生兄弟 在功能作用上几乎是一样的 在使用上有一些区别 1 printk 和printf 之间的一个显著区别在于printk 允许通过指定一个标志来设置优先级 从而决定这条打印是否需要打印出来
嵌入式Linux内核
Linux
驱动开发
c语言
内核启动过程中对CPU型号的确认
1 内核为什么要确认CPU型号 内核和CPU都是不断发展的 内核会不断的更新版本 CPU会不断的出新型号 每当厂商推出一款新的CPU都需要移植内核 使内核能在新款CPU上运行 如果我们将没有针对该款CPU移植过的内核放到该款CPU上运行 结
嵌入式Linux内核
Kernel
如何获取嵌入式设备的内核版本信息
1 有源码时 VERSION 2 PATCHLEVEL 6 SUBLEVEL 35 EXTRAVERSION 7 NAME Yokohama 如果你有内核的源码 可以在内核顶层的Makefile中找到版本号 上面的代码就是从内核的顶层Mak
嵌入式Linux内核
Ubuntu
Linux
运维
__setup宏定义
setup宏定义 struct obs kernel param const char str int setup func char int early define initconst section init rodata defin
嵌入式Linux内核
内核
静态映射和动态映射
1 为什么需要映射 在内核启动过程中会开启MMU 建立虚拟映射表 以后内核使用的都是虚拟地址 但是我们查询数据手册得到I O寄存器地址都是物理地址 于是需要将物理地址转换到虚拟地址 这样才能在内核空间去访问I O寄存器 物理地址转换到虚拟地
嵌入式Linux内核
Linux
Ubuntu
服务器
uboot以tag方式给内核传参
1 tag方式传参 1 struct tag tag是一个数据结构 在uboot和linux kernel中都有定义tag数据机构 而且定义是一样的 2 tag header和tag xxx tag header中有这个tag的size和类
uboot学习笔记
嵌入式Linux内核
内核
uboot
x86架构芯片启动过程分析
1 上电启动顺序 上电自检 读取ROM里的bios程序 bios程序会进行硬件检测 比如 内存 硬盘 显卡等 bios完成自检后 需要选择引导设备 比如设备上有U盘 SSD eMMC 机械硬盘 bios需要知道从哪个启动介质去启动计算机 b
嵌入式Linux内核
X86架构
嵌入式开发
内核调试手段
1 内核调试配置选项 内核拥有多项用于调试的功能 但是这些功能会造成额外的输出并导致性能下降 因此 内核通常都是禁止掉调试功能 内核调试相关的配置项主要集中在内核配置菜单 Kernel hacking 中 在使用下面的调试手段时 先确保内核
嵌入式Linux内核
《linux设备驱动程序第三版》
Linux
内核
linux内存管理——内存大小、起始地址的解析与修改
1 前言 1 本文是以hi3516dv300芯片的uboot和内核源码进行讲解 uboot版本是2016 11 内核版本是4 9 37 2 uboot没有采用设备树技术 还是传统的tag传参 内核采用了设备树技术 镜像是zImage dtb
嵌入式Linux内核
Linux
运维
服务器
内核源码中版本号详解(KERNEL_VERSION & KERNEL_VERSION)
1 内核源码中版本的定义 VERSION 2 主版本号 PATCHLEVEL 6 主版本号 SUBLEVEL 35 更次的版本号 EXTRAVERSION 7 更更次的版本号 NAME Yokohama 1 内核的版本信息定义在内核源码顶层
嵌入式Linux内核
Linux
驱动开发
内核
内核的位图和位操作接口介绍
1 内核的位图 1 位图 位图就是用一个bit来表示一个资源的情况 比如要表示32个资源的状态 如果是每个资源用一个int型变量去表示则需要32个int型变量 但是采用位图则只需要1个int型变量 32个bit 2 适用位图的情况 资源只有
嵌入式Linux内核
位图
位操作
内核(kernel)的链接脚本
1 链接脚本的产生 kernel的链接脚本和uboot的不同 uboot的链接脚本是源文件的一部分 而kernel的链接脚本在源文件中是找不到的 要经过编译才会产生 链接脚本的名字是vmlinux lds 由汇编文件vmlinux lds
嵌入式Linux内核
Linux
centOS
运维
编译时内核栈溢出:the frame size of 1928 bytes is larger than 1024 bytes
1 报错信息 error the frame size of 1928 bytes is larger than 1024 bytes Werror frame larger than 2 报错打印分析 1 编译器编译内核时 发现栈帧大小是
嵌入式Linux内核
Linux
Kernel
内核的并发和竞态(信号量、completion、自旋锁)
1 并发和并行 1 并行 在同一时刻有多个线程一起运行 2 并发 在同一时刻只有一个线程在运行 但是在一个时间段内有多个线程运行 总结 并发是宏观的并行 因为CPU运行特别快 虽然CPU不断在切换运行的线程 但是对于人来说 根本感知不到CP
嵌入式Linux内核
《linux设备驱动程序第三版》
Linux
服务器
互斥锁
开发板的上电锁存
1 开发板的软启动 开发板的电源开关用两种 1 拨码开关 打到一侧则接通 打到另一侧则关闭 开发板只有关闭和运行两种状态 电路设计简单 但是不能实现休眠模式 低功耗模式 2 按键 按下时通电 弹起时断电 但是我们可以给供电电路增加置锁电路
嵌入式Linux内核
ARM裸机开发(S5PV210)
单片机
嵌入式
vmlinuz/vmlinux、Image、zImage与uImage的区别
前言 内核镜像和其他的镜像并没有本质上的区别 都是用同一套交叉编译工具链来生成的 内核有这么多不同类型的镜像是为了满足各种启动方式 本质上和其他镜像都是一样的 只是在此基础上做了修改 生成镜像的过程 1 源代码经过编译链接变成elf格式的可
嵌入式Linux内核
内核
Linux
2.6.35内核的gpio子系统详解
1 内核gpio子系统介绍 1 1 gpio子系统为驱动程序提供的服务 1 系统中GPIO信息的管理 比如有多少个GPIO 每个GPIO的编号是什么等 2 GPIO的申请 释放 3 IO的输入 输出方向的设置 IO电平的输出或者输入设置 以
嵌入式Linux内核
嵌入式驱动开发
驱动开发
STM32
单片机
内核中关于启动条件的英文说明整理
内核中关于启动条件的说明 Kernel startup entry point This is normally called from the decompressor code The requirements are MMU off
嵌入式Linux内核
Kernel
嵌入式开发——uboot如何启动内核(以zImage详解)
1 vmlinuz vmlinux Image zImage与uImage的区别 参考博客 vmlinuz vmlinux Image zImage与uImage的区别 uboot启动内核的大致步骤 1 首先uboot要通过读取SD卡 fl
嵌入式Linux内核
uboot学习笔记
Linux
运维
服务器
Linux内核配置——menuconfig
1 menuconfig介绍 menuconfig的作用是提供一个图像化的界面去配置内核 也就是修改 config文件 其实你直接去修改 config文件 不用menuconfig也是可以的 但是 config里的配置项太多了 靠人根本记不
嵌入式Linux内核
Linux内核
1
2
»