
Linux基础
Howardk
这个作者很懒,什么都没留下…
展开
-
vscode 中使用git
1. 首先在电脑中安装git,点击会出现git bash here2、新建一个文件夹test,里面创建一个文件mian.c,打开vscode工作区此时点击代码管理,会出现3、点击vscode中的设置,输入git,编辑settings.json文件输入安装的git路径4、在test文件夹中打开给git here ,运行git init此时vscode就会出现...原创 2019-11-26 20:56:38 · 288 阅读 · 0 评论 -
Linux驱动开发8——将驱动添加到内核中
—————————————————————— 学习记录—————————————————————————1驱动的存在形式(1)野生,优势是方便调试开发,所以在开发阶段都是这种(2)家养,优势可以在内核配置时make menuconfig决定内核怎么编译,方便集成2 驱动开发的一般步骤(1)以模块的形式在外部编写、调试(2)将调试好的驱动代码集成到kernel中3添加到...转载 2019-07-17 20:41:23 · 231 阅读 · 0 评论 -
Linux内核宏解析——__stringify
在Linux内核中有一个宏__stringify,在include/linux/stringify.h定义如下:#ifndef __LINUX_STRINGIFY_H#define __LINUX_STRINGIFY_H/* Indirect stringification. Doing two levels allows the parameter to be a * macro...转载 2019-08-03 11:07:09 · 519 阅读 · 0 评论 -
Ubuntu16.04 安装 arm-linux-gcc
步骤1:在/usr/local/下创建/usr/local/arm文件夹。步骤2:把安装包arm-2009q3.tar.bz2拷贝到/usr/local/arm下。步骤3:解压。tar -jxvf arm-2009q3.tar.bz2到此相当于程序已经安装完毕,真正的应用程序安装在/usr/local/arm/arm-2009q3/bin目录下。步骤4:测试./arm-no...原创 2019-07-01 10:36:04 · 685 阅读 · 0 评论 -
register_chrdev_region/alloc_chrdev_region和cdev注册字符设备驱动
1 介绍内核提供了三个函数来注册一组字符设备编号,这三个函数分别是 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()。(1)register_chrdev 比较老的内核注册的形式 早期的驱动(2)register_chrdev_region/alloc_chrdev_region + cdev 新...转载 2019-08-08 09:51:53 · 440 阅读 · 0 评论 -
linux查看和修改PATH环境变量
查看PATH:echo $PATH以添加mongodb server为列修改方法一:export PATH=/usr/local/mongodb/bin:$PATH//配置完后可以通过echo $PATH查看配置结果。生效方法:立即生效有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置用户局限:仅对当前用户修改方法二:通过修改.bashrc文件...转载 2018-12-07 12:22:25 · 158 阅读 · 1 评论 -
Linux内核中双向链表的经典实现
一、Linux中的两个经典宏定义倘若你查看过Linux Kernel的源码,那么你对offsetof和container_of这两个宏应该不陌生。这两个宏最初是极客写出的,后来在Linux内核中被推广使用。1. offsetof1.1 offsetof介绍定义:offsetof在linux内核的include/linux/stddef.h中定义。#define off...转载 2019-07-13 14:39:12 · 832 阅读 · 1 评论 -
终于理解list_entry和list_for_each_entry
内核中经常采用链表来管理对象,先看一下内核中对链表的定义struct list_head { struct list_head *next, *prev; };一般将该数据结构嵌入到其他的数据结构中,从而使得内核可以通过链表的方式管理新的数据结构,看一个例子: struct example { member a; struc...转载 2019-08-08 18:43:19 · 1775 阅读 · 0 评论 -
Ubuntu14.04升级cmake版本的方法
1. 可去http://www.cmake.org/files查找需要的版本。$ sudo apt-get install build-essential$ wget http://www.cmake.org/files/v3.11/cmake-3.11.3.tar.gz$ tar xf cmake-3.11.3.tar.gz$ cd cmake-3.11.3$ ./configur...原创 2019-08-14 19:31:18 · 905 阅读 · 0 评论 -
Linux驱动开发7——gpiolib驱动led
—————————————————————— 学习记录—————————————————————————1 为什么需要gpiolib(1)一个事实:很多硬件都要用到GPIO、GPIO会复用(2)如果同一个GPIO被2个驱动同时控制了,就会出现bug(3)内核提供gpiolib来统一管理系统中所有GPIO(4)gpiolib本身属于驱动框架的一部分2 代码演示#includ...转载 2019-07-17 20:21:31 · 165 阅读 · 0 评论 -
Linux驱动开发6——led驱动框架
—————————————————————— 学习记录—————————————————————————#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exit#include <linux/fs.h>#inc...转载 2019-07-17 19:05:27 · 171 阅读 · 0 评论 -
内核配置和编译体验——基于s5pv210
步骤1:先确认Makefile(1)主要是检查交叉编译工具链有没有设置对。(2)确认ARCH = arm。主要目的是为了编译时能找到arch/arm目录。步骤2:make x210ii_qt_defconfig最后只要出现:configuration written to .config这句话,就证明我们的操作是正确的。如果没有出现这句话,就有错误。步骤3:make menucon...原创 2019-07-02 15:54:58 · 307 阅读 · 0 评论 -
uboot编译体验——基于s5pv210
步骤1:下载源码到Linux中步骤2: 在根目录下执行 make x210_sd_config执行配置命令后,如果出现:Configuring for x210_sd board... 说明配置好了。步骤3:编译(1)编译之前一定要注意检查arm-linux-gcc对不对第一步:检查当前编译环境中有没有安装合适的arm-linux-gcc。第二步:检查当前目录下(uboot根目...原创 2019-07-02 14:49:58 · 319 阅读 · 0 评论 -
s5pv210基础
目录1 S5PV210的内存映射详解2CPU和外部存储器的接口3S5PV210的启动过程详解1 S5PV210的内存映射详解1.1什么是内存映射?S5PV210属于ARM Cortex-A8架构,32位CPU,CPU设计时就有32根地址线&32根数据线。 32根地址线决定了CPU的地址空间为4G,那么这4G空间如何分配使用?这个问题就是内存映射问题(好像准...原创 2019-07-15 15:18:13 · 441 阅读 · 0 评论 -
ARM汇编指令集
1指令与伪指令(汇编)指令是CPU机器指令的助记符,经过编译后会得到一串10组成的机器码,可以由CPU读取执行。 (汇编)伪指令本质上不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码。2 两种不同风格的ARM指令ARM官方的ARM汇编风格:指令一般用大写、Windows中IDE开发环境(如ADS、MDK等)常用。如...原创 2019-07-16 09:46:30 · 715 阅读 · 0 评论 -
Linux驱动开发1 ——led驱动
—————————————————————— 学习记录—————————————————————————1驱动中如何操控硬件与在裸机中操控硬件对比:相同:(1)硬件物理原理不变(2)硬件操作接口(寄存器)不变(3)硬件操作代码不变不同:(1)寄存器地址不同。原来是直接用物理地址,现在需要用该物理地址在内核虚拟地址空间相对应的虚拟地址。寄存器的物理地址是CPU设计时决定的,从da...转载 2019-07-17 15:06:27 · 248 阅读 · 0 评论 -
Linux驱动开发2——led驱动(使用新接口)
—————————————————————— 学习记录—————————————————————————内核提供了三个函数来注册一组字符设备编号,这三个函数分别是 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()。(1)register_chrdev 比较老的内核注册的形式 早期的驱动(2)reg...转载 2019-07-08 21:30:26 · 161 阅读 · 0 评论 -
Linux驱动开发3——自动创建字符设备驱动的设备文件
—————————————————————— 学习记录—————————————————————————1 问题背景前面手动使用mknod /dev/test c 主设备号 次设备号,进行设备文件的创建,能不能使用代码对设备文件进行创建。2 使用udev(嵌入式中用的是mdev)(1)应用层的一个应用程序(2)内核驱动和应用层udev之间有一套信息传输机制(netlink协议)...转载 2019-07-17 16:07:11 · 209 阅读 · 0 评论 -
Linux驱动开发4——动态映射结构体方式操作
—————————————————————— 学习记录—————————————————————————对多个寄存器的映射用结构体进行封装typedef struct GPJ0REG{ volatile unsigned int gpj0con; volatile unsigned int gpj0dat;}gpj0_reg_t;#define GPJ0_REGBASE 0...转载 2019-07-17 16:19:04 · 185 阅读 · 0 评论 -
Linux驱动开发5——内核提供的读写寄存器接口
—————————————————————— 学习记录—————————————————————————内核提供了writel和readl接口对寄存器进行读写操作。裸机操作方法: if (!request_mem_region(GPJ0CON_PA, 4, "GPJ0CON")) return -EINVAL; if (!request_mem_region(GPJ0DAT_P...转载 2019-07-17 16:36:00 · 1140 阅读 · 0 评论 -
ARM体系结构
目录1 ARM体可编程器件的编程原理系结构2 指令集对CPU的意义3 RISC和CISC的区别4统一编址&独立编址&哈佛结构&冯诺依曼结构5 软件编程控制硬件的关键——寄存器6 ARM体系结构要点总结7 ARM的编程模式和7种模式8ARM的37个寄存器详解9ARM的异常处理方式1 AR...原创 2019-07-15 14:01:33 · 608 阅读 · 0 评论