![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
❏【linux内核分析】
linux
Yfw&武
IT爱好者
展开
-
Linux内核驱动之GPIO子系统(一)GPIO的使用
<!--一个博主专栏付费入口结束--> <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-d...转载 2019-11-16 12:42:46 · 1498 阅读 · 0 评论 -
关于pinctrl驱动的一些实践与理解
CPU:F1C100S目标系统:linux5.2suniv-f1c100s-licheepi-nano 设备树有这样一段: pio: pinctrl@1c20800 { compatible = "allwinner,suniv-f1c100s-pinctrl"; reg = <0x01c20800 0x400>; interrupts = <38&g...原创 2019-11-15 16:59:58 · 1668 阅读 · 4 评论 -
printk一些使用技巧
内核通过 printk() 输出的信息具有日志级别,日志级别是通过在 printk() 输出的字符串前加一个带尖括号的整数来控制的,如 printk("<6>Hello, world!/n");。内核中共提供了八种不同的日志级别,在 linux/kernel.h 中有相应的宏对应。#define KERN_EMERG "<0>" /* system is u...转载 2019-11-15 14:59:24 · 619 阅读 · 0 评论 -
Linux GPIO 驱动 (gpiolib)
目录1、简述2、Gpiolib 相关数据结构分析2.1 gpio_chip 结构2.2 gpio_desc 结构2.3 gpio_device 结构3、Gpiolib 对接芯片底层3.1、注册 GPIO 资源(gpiochip_add)3.2、gpiochip_add_data_with_key4、Gpiolib 为其他驱动提供的 APIs4.1、gpio_request4....转载 2019-11-14 17:00:11 · 1185 阅读 · 2 评论 -
paging_init()函数
paging_init () --> bootmem_init () //为主内存创建映射 --> bootmem_init_node () //为指定节点的主内存创建映射 --> map_memory_bank() //为一个Bank创建映射 ...转载 2019-11-01 13:44:36 · 553 阅读 · 0 评论 -
Linux-IO内存-静态映射
通常来说,BSP需要提供芯片级驱动,并要为板级驱动提供一些服务,在为具体芯片移植linux内核时,通常都会建立芯片级外设I/O内存物理地址到虚拟地址的静态映射,这通常是通过板文件中的MACHINE_START宏中的map_io函数来实现的,map_io函数中通常通过调用iotable_init函数来建立页映射关系,如:iotable_init(s3c_iodesc, ARRAY_SIZE(s3c...转载 2019-11-01 13:38:13 · 303 阅读 · 0 评论 -
Linux 设备树介绍
一、由于各个厂家平台不一样,每个厂商可能将自己的扳机信息都放在扳级信息目录下,在/arch/arm/arch-都是扳级信息,就会有很多重复的代码目的:为了避免各个厂商代码重复,加速linux内核的bsp开发(注:bsp :board support packge)设备树:就是一个描述板子硬件信息的数据结构文件(二进制文件)通过lk(bootloader)加载不同(对应的)内核.内容:dt...翻译 2019-11-01 13:29:57 · 1563 阅读 · 0 评论 -
Nano的设备树源码(F1C100S)
荔枝派Nano的设备树源码suniv.tdsi(文件位置: /arch/arm/boot/dts/suniv.tdsi)// SPDX-License-Identifier: (GPL-2.0+ OR X11)/* * Copyright 2018 Icenowy Zheng <icenowy@aosc.io> */#include <dt-bindings/clo...原创 2019-11-01 12:22:04 · 2403 阅读 · 0 评论 -
struct machine_desc 结构体详解
MACHINE_START的使用及各个成员函数的的放置位置以及调用过程如下:MACH_TYPE_SMDK2410这个值是目标板的类型值,定义在arch/include/asm-arm/mach-types.h内,值为193./* arch/include/asm-arm/mach-types.h */ #define MACH_TYPE_SMDK2410 193由上发现,M...转载 2019-11-01 09:52:38 · 981 阅读 · 0 评论 -
Linux宏:__ASSEMBLY__
汇编:assembly猜测:所以这个宏跟汇编有关?!引用:某些常量宏会同时被C和asm引用,而C与asm在对立即数符号的处理上是不同的。asm中通过指令来区分其操作数是有符号还是无符号的,而不是通过操作数。而C中是通过变量的属性,而不是通过操作符。C中如果要指明常量有无符号,必须为常量添加后缀,而asm则通过使用不同的指令来指明。如此,当一个常量被C和asm同时包含时,必须做不同的处理。故KB...转载 2019-11-01 09:03:05 · 529 阅读 · 1 评论 -
head.S中的MMU分析
PAGE_OFFSET 在 arch\arm\include\asm\memory中定义。#define PAGE_OFFSET UL(CONFIG_PAGE_OFFSET)CONFIG_PAGE_OFFSET 在内核根目录下的配置文件 .config 中定义CONFIG_PAGE_OFFSET =0xC0000000...原创 2019-10-30 13:41:51 · 281 阅读 · 0 评论