![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
StevenYang2008
嵌入式软件开发、芯片安全、linux驱动开发
展开
-
hwrng
hwrng目前是Linux kernel中产生随机数的一个driver,位于 /dev/hwrng.以NXP imx6DL 为例,使用命令如下:root@imx6dlsabresd:~# dd if=/dev/hwrng of=data.bin bs=200 count=11+0 records in1+0 records out200 bytes copied, 0.000799333 s, 250 kB/sroot@imx6dlsabresd:~# hexdump data.bin00000原创 2020-07-29 15:24:54 · 1123 阅读 · 0 评论 -
浅谈Linux PCI设备驱动(二)
我们在浅谈Linux PCI设备驱动(一)中(以下简称 浅谈(一) )介绍了PCI的配置寄存器组,而Linux PCI初始化就是使用了这些寄存器来进行的。后面我们会举个例子来说明Linux PCI设备驱动的主要工作内容(不是全部内容),这里只做文字性的介绍而不会涉及具体代码的分析,因为要分析代码的话,基本就是对 Linux内核源代码情景分析(下册)第八章的解读,读者若想分析代码,可以参考该书的内容,我们这里就不去深入分析这些代码了。Linux PCI设备驱动代码必须扫描系统中所有的PCI总线,寻找系统中所转载 2020-07-22 16:05:44 · 267 阅读 · 0 评论 -
浅谈Linux PCI设备驱动(一)
要弄清楚Linux PCI设备驱动,首先要明白,所谓的Linux PCI设备驱动实际包括Linux PCI设备驱动和设备本身驱动两部分。不知道读者理不理解这句话,本人觉得这句话很重要,对于PCI、USB这样的驱动来说,必须要理解这个概念,才能明白该如何看待Linux下的PCI和USB以及类似的总线型的驱动。理由也很简单,就是Linux PCI驱动是内核自带的,或者说内核帮你写好了!而我们需要完成的就是设备本身的驱动,比如网卡驱动等。当然,并不是说内核帮咱们写好了Linux PCI驱动我们什么就不用做了,至转载 2020-07-22 15:35:26 · 743 阅读 · 0 评论 -
Vigiles 漏洞扫描工具使用
1. 前言在linux嵌入式软件开发的过程中,我们有可能会遇到一些机构检测出的BUGS,在这里介绍一款软件:vigiles。利用它你可以进行漏洞扫描,找出你有可能未修复的漏洞。2.环境设置这款软件是伴随着Yocto环境使用的,其实就是在yocto 编译的时候扫一下现在code中的漏洞。2.1 Yocto环境编译的要预装一些一些软件,可以参考一下链接:https://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#ref-manual原创 2020-07-09 22:48:21 · 445 阅读 · 0 评论 -
Linux内核 Crash分析
在工作中经常会遇到一些内核crash的情况,本文就是根据内核出现crash后的打印信息,对其进行了分析,使用的内核版本为:Linux2.6.32。每一个进程的生命周期内,其生命周期的范围为几毫秒到几个月。一般都是和内核有交互,例如用户空间程序使用系统调用进入内核空间。这时使用的不再是用户空间的栈空间,使用对应的内核栈空间。对每一个进程来说,Linux内核都会把两个不同的数据结构紧凑的存放在一个单独为进程分配的存储空间中:一个是内核态的进程堆栈,另一个是紧挨进程描述符的数据结构thread_info,叫线程转载 2020-07-08 23:22:03 · 676 阅读 · 0 评论 -
内核调试工具 — kdump & crash
1. kdump简介kdump是系统崩溃的时候,用来转储运行内存的一个工具。系统一旦崩溃,内核就没法正常工作了,这个时候将由kdump提供一个用于捕获当前运行信息的内核,该内核会将此时内存中的所有运行状态和数据信息收集到一个dump core文件中以便之后分析崩溃原因。一旦内存信息收集完成,可以让系统将自动重启。kdump是RHEL5之后才支持的,2006被主线接收为内核的一部分。它的原理简单来说是在内存中保留一块区域,这块区域用来存放capture kernel,当production kernel转载 2020-07-08 23:00:44 · 915 阅读 · 0 评论 -
NXP I.MX芯片软件资源集锦
此篇文章为NXP I.MX系列芯片相关的公开开源资源,旨在帮助大家快速找到需要学习资源。LINUXLINUX DOCS这部分的链接是linux的相关文档,包括Yocto环境的搭建,如何烧写image以及一些移植说明的文档。L4.1.15_1.0.0_LINUX_DOCSL4.1.15_1.2.0_LINUX_DOCSL4.1.15_2.1.0_LINUX_DOCSL4.14.98_2.1.0_LINUX_DOCSL4.14.98_2.2.0_LINUX_DOCSL4.14.98_2.3.1原创 2020-06-26 18:17:37 · 1495 阅读 · 0 评论 -
NXP之imx系列芯片 linux代码编译简介
NXP的imx系列芯片使用很广的芯片,这篇文章就介绍下imx 芯片 Yocto 环境的搭建,以及单独编译 uboot,kernel 的方法。PC: ubuntu 16.041.环境设置1.1 PC软件预装在编译之前首先要预装一些相关的软件,安装命令如下:sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \build-essential chrpath socat libsdl1.2-dev如原创 2020-06-17 16:09:31 · 5297 阅读 · 1 评论 -
Linux 编译错误以及解决方案集锦
1.在linux中编译一个应用出现了以下错误: “fatal error: openssl/aes.h: No such file or directory”.出现这个原因是因为linux系统中缺少openssl相应的文件。To fix this problem, you have to install OpenSSL development package, which is available in standard repositories of all modern Linux distribu原创 2020-06-14 21:09:06 · 2488 阅读 · 0 评论 -
Bootargs参数设置
Bootargs参数,通常由uboot传递至kernel。有两种方法可以设置。1.在UBOOT中利用命令行设置进入命令行模式:输入以下命令u-boot=>setenv bootargs root=/dev/mmcblk0p1 或者 u-boot=>setenv bootargs console=ttymxc0,115200 root=/dev/mmcblk3p2u-boot=>saveenv 2.在DTS中设置例如:..........................原创 2020-06-11 17:50:41 · 1645 阅读 · 0 评论 -
linux spinlock/rwlock/seqlock原理剖析(基于ARM64)
背景Read the fucking source code! --By 鲁迅A picture is worth a thousand words. --By 高尔基说明:Kernel版本:4.14ARM64处理器,Contex-A53,双核使用工具:Source Insight 3.5, Visio1. 概述吹起并发机制研究的进攻号角了!作为第一篇文章,应该提纲挈领的介绍下并发。什么是并发,并发就是:你有两个儿子,同时抢一个玩具玩,你一巴掌打在你大儿子手上,小儿子拿到了玩具。并发是转载 2020-06-04 17:43:12 · 444 阅读 · 0 评论 -
linux创建线程之pthread_create()函数
创建线程是每个linux开发者都会用到的。在这里介绍一下pthread_create()函数。我们来看一看怎么创造一个线程。首先查看pthread_create()函数的定义:PTHREAD_CREATE(3) Linux Programmer's Manual PTHREAD_CREATE(3)NAME top pthread_create - create a new threadSYNOPSIS top原创 2020-06-02 18:09:13 · 2409 阅读 · 2 评论 -
Linux select/poll机制原理分析
前言Read the fucking source code! --By 鲁迅A picture is worth a thousand words. --By 高尔基1. 概述Linux系统在访问设备的时候,存在以下几种IO模型:1.Blocking IO Model,阻塞IO模型;2.Nonblocking I/O Model,非阻塞IO模型;3.I/O Multiplexing Model,IO多路复用模型;4.Signal Driven I/O Model,信号驱动IO模型;5.A转载 2020-06-02 10:49:37 · 395 阅读 · 0 评论 -
聊聊Linux 五种IO模型
上一篇《聊聊同步、异步、阻塞与非阻塞》已经通俗的讲解了,要理解同步、异步、阻塞与非阻塞重要的两个概念点了,没有看过的,建议先看这篇博文理解这两个概念点。在认知上,建立统一的模型。这样,大家在继续看本篇时,才不会理解有偏差。那么,在正式开始讲Linux IO模型前,比如:同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。1 概念说明在进行解释之前,首先要说明几个概念:用户空间和内核空间进程切换进程的阻塞转载 2020-06-01 17:19:15 · 335 阅读 · 0 评论 -
聊聊同步、异步、阻塞与非阻塞
聊聊同步、异步、阻塞与非阻塞近来遇到了一些常见的概念,尤其是网络编程方面的概念,如:阻塞、非阻塞、异步I/O等等,对于这些概念自己也没有太清晰的认识,只是很模糊的概念,说了解吧也了解,但是要让自己准确的描述概念方面的具体细节,却说的不那么准确,这也是自己在这几个方面也没有细细考究过的原因吧。经过看了些这几个概念的资料,发现同步、异步、阻塞、非阻塞的概念其实也并不难以理解,在此写下此文,欢迎拍砖,希望多多交流。同步与异步首先来解释同步和异步的概念,这两个概念与消息的通知机制有关。也就是同步与异步主要是从转载 2020-06-01 16:54:29 · 216 阅读 · 0 评论