Linux
文章平均质量分 60
龙井茶110
嵌入式刚入门的一个小白, 请各位多多包涵
展开
-
vmware player初体验
首先就是安装VMware 然后安装虚拟机镜像再接着就是安装交叉工具链然后将交叉工具地址导出到环境变量.在原创 2020-05-18 20:33:17 · 312 阅读 · 0 评论 -
uboot 2017.01初次编译
首先配置Makefile 中的交叉编译工具CH),$(ARCH))#CROSS_COMPILE ?= 这里加#进行注释掉endif// 添加后面两句ARCH = armCROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-首先需要配置, 配置文件看/configs 文件, 找到相同的芯片...原创 2020-04-28 22:30:01 · 450 阅读 · 0 评论 -
linux 的##连接符宏定义
有时候在linux中发现有些函数时只有引用,但是却找了整个linux却发现不了在哪里定义,经过分析,发现有些函数其实是宏,譬如cpu_is_s5pc110()其实是#define IS_SAMSUNG_TYPE(type, id) \static inline int cpu_is_##type(void) \{ \ return s5p_cpu_id == id...原创 2020-04-20 06:43:30 · 652 阅读 · 0 评论 -
将驱动添加到内核中
编写好的驱动文件之后将驱动文件放到drivers/xxx目录下接着修改Makefile 中添加相应的编译后的.o文件 里面应该有一个配置宏接着在当前目录下的kconfig文件中添加配置宏的选项信息.最后通过make menuconfig 进行配置...原创 2020-03-08 21:22:12 · 230 阅读 · 0 评论 -
中断的上下半部
linux 系统中将中断的处理程序分成上下半部, top half 下半部bottom half紧急的任务作为上半部, 非紧急的事情放在下半部这样其实是省力不省功, 因为中断处理的程序时间一样, 但是好处就是, 系统的响应性好.中断的下半部关键就是#define DECLARE_TASKLET(name, func, data) \struct tasklet_struct na...原创 2020-01-16 19:56:41 · 185 阅读 · 0 评论 -
input子系统
input 的子系统的驱动模型核心结构体struct input_event {struct timeval time;__u16 type; // 类型__u16 code; //__s32 value; //};硬件 发生input事件, 然后通过input_event 结构体向应用层申报事件发生, 应用层处理相应的事件#define EV...原创 2020-01-07 23:00:33 · 198 阅读 · 0 评论 -
linux 杂类积累
man 查找1 用户命令, 可由任何人启动的。2 系统调用, 即由内核提供的函数。3 例程, 即库函数,比如标准C库libc。man 3 open原创 2020-01-02 20:18:26 · 80 阅读 · 0 评论 -
framebuffer 设备
framebuffer 帧缓冲(简称fb), 是linux内核中虚拟出的一个设备framebuffer向内核提供统一的标准接口显示设备从驱动的角度来说, fb是一个典型的字符设备, 而是也有一个类 /sys/class/graphics显示器: 其实就是SOC 通过控制寄存器与显示器的控制器进行对接, 然后进行虚拟内存的映射(其实就是显存).在控制器之间对接完成之后, 只需要通过往显存里面...原创 2020-01-02 20:13:00 · 257 阅读 · 0 评论 -
linux的互斥与同步
在单处理器不可抢占系统中, 使用local_irq_enable 和local_irq_disable 可以消除异步并发原的有效方法具体的功能是进行关闭中断和开放中断防止在代码执行的过程的时候被中断打断还有就是local_irq_enable 和local_irq_disable的变体,local_irq_save 和local_irq_restore这两个宏定义相对于前者来说是在loca...原创 2019-12-31 14:01:42 · 90 阅读 · 0 评论 -
misc 设备
什么是misc : 中文名叫杂散类设备/sys/class/misc典型的字符设备内核里面也有一套驱动框架, 内核实现部分是misc.c在使用内核misc的框架安装字符设备驱动之后,会在dev里面看到相应的设备信息....原创 2019-12-31 06:12:24 · 189 阅读 · 0 评论 -
platform
什么是platform 总线式一个虚拟的, 将SOC中集合的各种外设总称为platform 总线使用platform 总线注册驱动platform_driver_register 进行注册 需要提供 platform_driver 结构体然后注册成功之后会在sys/bus/platform 里面可以看到里面有刚安装驱动的名字...原创 2019-12-27 07:35:27 · 77 阅读 · 0 评论 -
将驱动添加到内核中
将写好的驱动源文件写入内核源码中正确的目录下在Makefile 中添加相应的依赖然后根据Makefile中的依赖添加到Kconfig中相应的配置项然后make menuconfig5确定添加成功, 当make menuconfig后打开.config文件,然后查看在makefile中的依赖宏是否等于Y...原创 2019-12-25 21:10:25 · 212 阅读 · 0 评论 -
linux gpiolib
gpiolib的建立smdkc110_map_ios5pv210_gpiolib_init // gpiolib的初始化过程struct s3c_gpio_chip 结构体里面变量,分析调用关系samsung_gpiolib_add_4bit_chipssamsung_gpiolib_add_4bits3c_gpiolib_add注册方法:s3c_gpiol...原创 2019-12-25 08:46:16 · 79 阅读 · 0 评论 -
linux led驱动框架分析
linux的驱动框架重点代码在/drivers/leds/led-class.c/drivers/leds/led-core.c两个文件subsys_initcall(leds_init);subsys_initcall 宏定义: 将声明的函数链接在指定的段中由/arch/arm/kernel/vmlinux.lds.S 脚本文件指定链接leds_initclass_create ...原创 2019-12-19 07:35:56 · 322 阅读 · 0 评论 -
linux 内核驱动工作原理
重点: file_operations 结构体(1) 里面元素是函数指针, 用来指向实体函数地址(2) 每个设备驱动都需要一个改结构体类型的变量(3) 设备驱动需要向内核注册, 在注册的时候, 是要提供此结构体的变量的注册字符驱动:(1) 驱动是需要向内核注册的, 不然内核不知道有这个驱动(2) 注册的函数主要是register_chrdev 函数去注册register_chrde...原创 2019-12-05 07:22:57 · 478 阅读 · 0 评论 -
新版uboot的启动过程
程序的入口是在 _start具uboot的入口是由链接脚本决定,链接脚本在/arch/arm/cpu/u-boot.ldsENTRY(_start)SECTIONS{#ifndef CONFIG_CMDLINE /DISCARD/ : { *(.u_boot_list_2_cmd_*) }#endif#if defined(CONFIG_ARMV7_SECURE_BASE) &...原创 2019-11-19 06:51:36 · 260 阅读 · 0 评论 -
linux 内核的链接脚本分析
声明及感谢,此文章为参照朱有鹏老师的linux课程总结的。 在此表示感谢!分析链接脚本的作用就是找到整个程序的entrykernel的链接脚本不是直接提供的, 而是提供了一个汇编文件vmlinux.lds.S然后进行编译得到真正的vmlinux.lds的脚本文件,vmlinux.lds.S文件在arch/arm/kernel/文件目录中为什么不直接提供.lds的脚本文件, 而是提供一个汇编...原创 2019-10-27 14:10:04 · 461 阅读 · 0 评论 -
linux学习(五)一些汇编指令
注: 这里是我自总结的一些知识, 可能有些是错误,只作为本人的理解。 请高手勿喷汇编代码中_start: ldr r1, =0xE0200280 ldr r0, =0x00111000 str r0, [r1]halt: b halt_start 标号halt:b halt 这个就相当于死循环。ldr r1, = 0x30020...转载 2019-03-18 21:14:20 · 606 阅读 · 0 评论 -
linux学习(四)makefil分析
历程:led.bin: led.o al-ld -Ttext 0x0 -o led.elf $^ al-objcopy -O binary led.elf led.bin al-objdump -D led.elf > led_elf.dis gcc mkv210_image.c -o mkx210 ./mkx210 led.bin 210.bin %.o : %.S a...原创 2019-03-18 07:09:13 · 481 阅读 · 0 评论 -
linux学习(三)为工具链创建符号链接
为了方便使用工具链给工具链创建一个符号链接譬如ln arm-none-linux-gnueabi-addr2line -s arm-linux-addr2line意思是将 arm-none-linux-gnueabi-addr2line 工具链 创建的符号链接为 arm-linux-addr2line...转载 2019-03-17 21:36:27 · 355 阅读 · 0 评论 -
linux学习(二)导出环境变量
环境变量的意义:环境变量就是操作系统的全局变量, 每一个环境变量对操作系统来说都是唯一的,名字所代表的意义都是唯一的。linux系统可以有很多个环境变量。其中有一部分是linux系统自带的,还有一些是我们自己来扩创的。PATH 环境变量 PATH这个环境变量是系统自带的,它的含义就是系统在可以查找可执行程序会搜索的路径和范围。打印环境变量:echo $PATH将工具链导出到环境变量e...转载 2019-03-17 20:51:31 · 3400 阅读 · 0 评论 -
linux学习(一)擦除u-boot办法
擦除开发吧iNand中的uboot的方法在linux和android系统下,擦除uboot的方法:busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=syncsync在uboot底下如何擦除uboot:movi write u-boot在s5pv210 中, movi write u-boot ...转载 2019-03-17 19:08:16 · 1702 阅读 · 0 评论 -
linux学习(十一) 链接脚本
链接脚本,其实是个规则文件. 是程序员用来指导链接器工作的, 链接器会参考链接脚本, 并使启动的使用规定的规则来处理.o文件中的那些段, 将其链接成一个可执行程序.段: 程序中有分为各个不同的段段名分为2中: 一种是编译器链接器内部定好的, 这是先天的名字, 另外一种是程序员自己指定的,自定义的段名.先天性段名代码段(.text): 又叫文本段, 代码段其实就是函数编译后生成的东西.数...转载 2019-03-20 07:29:14 · 420 阅读 · 0 评论 -
linux学习(十) 210的启动过程
S5PV210的启动过程, 三星推荐和uboot的实际是不同的三星推荐的启动方式中: bootloader 必须小于96KB并大于16KB, 假定bootloader 为80KB ,启动过程是这样的, 先上电开机后BL0运行, BL0会加载外部启动设备中的bootloader的前16KB(BL1)到SRAM中去运行, BL1运行时会加载BL2(bootloader中的 80 - 16KB)到SR...转载 2019-03-20 06:46:31 · 162 阅读 · 0 评论 -
linux学习(九)重定位
声明及感谢, 本文为参照朱有鹏的linux课程总结的, 在此对朱有鹏老师表示感谢.关于重定位的一些概念:位置无关码(PIC position independent code ): 汇编源文件被编码成二进制可执行程序时编码方式与位置(内存地址)无关位置有关码: 汇编源码编码成二进制可执行程序后和内存地址是无关的.一般情况下, 我们在编译和链接时会给定一个地址,这个地址叫链接地址, 然后希望...转载 2019-03-19 22:44:24 · 2141 阅读 · 2 评论 -
linux学习(六)dd命令
本文为转载文章, 在此对博主表示感谢!作者:linuxweiyh来源:CSDN原文:https://blog.csdn.net/linuxweiyh/article/details/51254047在做嵌入式移植的时候,看到了这个命令,下面的内容也可以说是转载过来的。dd命令作用:指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,起到一个初始化磁盘的作用我的理解:第一句话:从一...转载 2019-03-18 21:33:40 · 313 阅读 · 0 评论 -
linux学习(七)设置栈
本博客是参考朱有鹏老师的linux课程总结, 在此声明感谢。C语言运行时,需要栈。 因为C语言中的局部变量就是使用栈来实现的。CPU 的每种模式中都有自己独立的栈, 也就是 SP寄存器(r13).为什么需要模式中的栈独立呢, 因为如果共同使用栈,那么如果应用程序一旦出错,就会连累操作系统的栈损坏。整个操作系统程序就会崩溃。合理的解决方案就是使用独立的栈。这样自己的栈出现问题,不会连累到整...转载 2019-03-19 06:53:41 · 840 阅读 · 0 评论 -
linux学习(十二)关于中断
声明及感谢, 本文为参照朱有鹏的linux课程总结的, 在此对朱有鹏老师表示感谢.CPU都有异常处理的机制, 所谓的异常,就是发生复位, 中断, 快速中断, 取指令异常, 数据异常, 我们都统一叫异常,异常向量表: 各个异常发生的地址的一张表, 其实就是一个地址偏移量 加各种异常的偏移地址.查文档可以看到 异常向量表的首地址得知 异常向量表的首地址是0xD0037400...转载 2019-03-27 22:36:40 · 150 阅读 · 0 评论 -
u-boot 2017版本的配置编译参考
本文主要是一个书签转载的作用:原文是 作者: to run_away的博文:https://blog.csdn.net/qq_16777851/article/details/81543373在此声明感谢.转载 2019-08-28 06:39:38 · 223 阅读 · 0 评论 -
linux 压缩解压缩
此博客转载自https://www.cnblogs.com/manong--/p/8012324.html感谢作者:Linux下的tar压缩解压缩命令详解tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案...转载 2019-07-09 21:44:58 · 107 阅读 · 0 评论 -
linux 随堂笔记
应用程序的故障, 不会导致内核的崩溃.应用程序通过内核定义的API接口来调用内核工作.API接口: 内核提供应用程序调用的标准,总结1: 应用程序是最终目标,总结2: 内核就是为了应用程序提供低层资源管理的服务员.内核和根文件系统.(1) 根文件系统提供根目录.(2) 进程1存放在根文件系统中. 进程1: 内核态在用户态交界处.(3) 内核启动最后会去装载根文件系统:(4) 总结...原创 2019-07-09 21:43:59 · 285 阅读 · 0 评论 -
转 linux学习(十六)擦除环境变量
声明及感谢, 本文为参照朱有鹏的linux课程总结的, 在此对朱有鹏老师表示感谢.uboot执行过saveenv,因此环境变量已经被保存到inand中的env分区中去了, uboot启动后校验时inand的env分区的环境变量是正确的, 因此会优先加载.我们在uboot源代码中修改的只是默认的环境变量.解决方案是擦除掉inand中的那一份环境变量.然后迫使uboot启动时使用.擦除的方法是使用...转载 2019-05-21 06:41:47 · 507 阅读 · 0 评论 -
linux学习(十五)如何在windows中与linux开发
首先, 在linux中修改代码是比较不方便的, 因此一般的开发就需要在linux和windows中有两份一模一样的源码.首先通过source Insight软件在win1dows中进行编辑代码. 再通过SSH Secure shell 用来同步代码, 在linux中进行编译链接这个需要涉及到虚拟机ubuntu上网的问题, 首先要与主机windows可以ping通.将虚拟机与windows 网...转载 2019-05-16 22:37:54 · 206 阅读 · 0 评论 -
ubuntu的使用经验,
在这里记录使用ubuntu 的一些情况, 首先一开始使用,打开终端, 想进入root 用户, 一般给root 用户创建一个密码, sudo passwd root随后多次输入密码, 即可ok, 将来再次进入root用户,即直接su root 然后密码即可关于打开终端之后发现终端窗口有点小并且, 字体也很小, 那么调整终端窗口和字体是shift ctrl + 三个按键一起,即可让终端...原创 2019-04-24 22:14:37 · 160 阅读 · 0 评论 -
linux学习(十三)shell
声明及感谢, 本文为参照朱有鹏的linux课程总结的, 在此对朱有鹏老师表示感谢.shell 是一类变成语言:shell 语言有很多种,linux下常用的脚本语言其实就是bash, sh:shell 程序运行的方式有三种第一种: ./xx.sh 这种是需要可执行权限的, 可以使用 chmod a+x xx.sh来添加可执行程序(a+x是给所有人加上可执行权限,包括所有者,所属组,和其他人...转载 2019-04-08 22:04:50 · 116 阅读 · 0 评论 -
linux学习(十五)uboot中的Makefile分析
首先是一些关于版本的定义,然后编译的到 include/version_autogenerated.h 文件, 从autogenerated 字面意思都可以看出这是自动得到的.打开这个version_autogenerated.h 里面是一个宏定义#define U_BOOT_VERSION “U-Boot 1.3.4”就是关于版本号信息的一个字符串宏定义.然后有关sed命令HOSTA...转载 2019-04-11 22:58:32 · 322 阅读 · 0 评论 -
linux学习(十四)linux命令行基础
查看一个文件属性, ls -l 文件名字譬如 ls -l u-boot.bin就是查看这个u-boot.bin的一些属性-rwxr-xr-x 1 root root 393216 Apr 11 07:21 u-boot.bin可以看到文件的属性, 还有大小 是393216字节还可以使用 du -h 文件名 查看文件的大小譬如 du -h u-boot.bin打印出来是384K u-...原创 2019-04-11 07:29:21 · 211 阅读 · 0 评论 -
linux学习(八) 操作icache
声明及感谢,此文章为参照朱有鹏老师的linux课程总结的。 在此表示感谢!首先来说cache是一种内存, 叫高速缓存。从容量来说: CPU < 寄存器 < cache < DDR从速度来说: CPU > 寄存器 > cache > DDRcache的存在是因为 它的速度比寄存器慢, 但是比DDR的块, CPU在运行时, 在于DDR进行交互时,由于DDR...转载 2019-03-19 21:12:21 · 411 阅读 · 0 评论