-
ARM系列文章,请点击以下汇总链接:《从0学arm合集》一、MDK和GNU伪指令区别我们在学习汇编代码的时候经过会看到以下两种风格的代码:gnu代码开头是:.global _start_start: @汇编入口 ldr sp,=0x410 ...
-
很多应届生在求职过程中遇到过被放鸽子的情况,但是由于段位不高,资源不够,社会阅历尚浅,很多人都是忍气吐声,但是也不乏有些学生性格刚硬,怒怼的。比如下面这位学生,竟然直接怼了HR。0、应届硕士小伙怒怼HR来 ...
-
点击左上方蓝色“一口Linux”,选择“设为星标”第一时间看干货文章 【干货】嵌入式驱动工程师学习路线【干货】Linux嵌入式知识点思维导图免费获取【就业】一个可以写到简历的基于Linux物联网综合项目【就业】找工 ...
-
一、粉丝提问i2c的设备树和驱动是如何匹配以及何时调用probe的?粉丝手里的I2C外设是ov5640,一个摄像头。粉丝提问,一口君必须安排。二、问题分析设备树信息如下: ov5640: ov5640@3c { compatible = "ovt ...
-
ARM系列文章合集如下:《从0学arm合集》0. 前言一般我们购买一个开发板,厂家都会给出对应的电路图文件,我们可以通过搜索对应名称来查找到对应的外设。对于驱动工程师来说,我们只需要知道外设与SOC交互的一些数据 ...
-
击左上方蓝色“一口Linux”,选择“设为星标”第一时间看干货文章 【干货】嵌入式驱动工程师学习路线【干货】Linux嵌入式知识点思维导图免费获取【就业】一个可以写到简历的基于Linux物联网综合项目【就业】找工作 ...
-
很多粉丝在群里提问,如何把一个模块文件编译到内核中或者独立变异成ko文件。本文给大家详解讲解。1. 内核目录 Linux内核源代码非常庞大,随着版本的发展不断增加。它使用目录树结构,并且使用Makefile组织配置、编 ...
-
继续更新两篇ARM专题文章,该系列汇总如下:《从0学ARM》本文主要目的是如何从0编译和移植uboot,增加串口、网络、emmc等功能,让他支持exynos4412开发板。一、移植步骤 1. Uboot配置指定交叉编译工具链进入uboot代 ...
-
关于ARM的一些基本概念,大家可以参考我之前的文章:《0.到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc?一文帮你梳理基础概念【科普】》0. 如何学习arm?ARM的知识点很多很杂,很多同学都遇到过类似的问题, ...
-
ARM系列文章合集如下:《从0学arm合集》前言在嵌入式开发中,ADC应用比较频繁,本文主要讲解ADC的基本原理以及如何编写基于ARM的裸机程序和基于Linux的驱动程序。ARM架构:Cortex-A9Linux内核:3.14在讲述ADC之前, ...
-
ARM系列文章合集如下:《从0学arm合集》一、RTCRTC(Real-Time Clock) 实时时钟。RTCRTC是集成电路,通常称为时钟芯片。在一个嵌入式系统中,通常采用RTC来提供可靠的系统时间,包括时分秒和年月日等,而且要求在系 ...
-
一、问题整理 内核中两个模块,一个A,一个B,A模块中有操作函数,B模块要调用A模块的函数。二、分析 这是一个驱动工程师经常遇到的一个问题,该问题其实是模块符号导出问题,实现该功能比较简单,借助EXPORT_SYMBO ...
-
粉丝问题如何制作rootfs?安排!想直奔主题的,直接跳到第四章。一、分析 1. 文件系统简介理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的,文件系统简单的说就是一种 ...
-
ID:技术让梦想更伟大作者:李肖遥队列的概念首先我们联想一下链表,在单链表中,我们只能对他的链表表尾进行插入,对链表的表头进行结点的删除,这样强限制性的链表,就是我们所说的队列。也就是说,队列(queue) ...
-
一、 问题描述 access_ok函数是什么原理?问题二、问题分析 我们在内核空间和用户空间进行数据拷贝的时候必须判断用户空间地址是否合法。主要通过偶函数access_ok来判断。1. Linux用户空间与内核地址空间Linux 操作 ...
-
关于ARM的一些基本概念,大家可以参考我之前的文章:《到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc?一文帮你梳理基础概念【科普】》关于ARM指令用到的IDE开发环境可以参考下面这篇文章《1. 从0开始学ARM-安 ...
-
概述用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、 ...
-
一起入职的同事能力不如我,只因学历比我高,工资是我的两倍!我想这是很多初入职场的同学经常会遇到的一个问题。【本篇只针对研发人员】一口君有个朋友C君刚毕业的第一家,也遇到过类似的问题。C君是本科进入做路 ...
-
粉丝的提问,必须安排。两个线程,两个互斥锁如何形成死锁?程序流程图如下:程序流程图如上图所示:t0时刻,主线程创建子线程,并初始化互斥锁mutex1、mutex2;t1时刻,主线程申请到了mutex1、子线程申请到了mutex ...
-
推荐关注下方公众号学习更多Linux、驱动知识!这两个函数是字符设备初始化相关的内核函数。要想了解这两个函数,必须要知道字符设备的架构,以及字符设备创建的流程。关于字符设备可以参考下面这篇文章《手把手教Li ...
-
本篇是从0学ARM系列文章的最后一篇,后面暂无更新计划。想学习ARM知识,建议收藏下面的合集的链接。《从0学ARM》uboot中网络协议栈网卡的驱动,对于上层协议来说,已经封装好了发送和接收数据的接口,那么上层协 ...
-
B站Linux驱动入门视频已经更新到25节了,还有几期,驱动第一期就更新完毕。很多粉丝留言问我如何搭建视频中的虚拟机环境,本篇文章手把手教你。要想节省时间,直接获取彭老师安装好的虚拟机,也可以后台回复 :u ...
-
一、异常(Exception)异常是理解CPU运转最重要的一个知识点,几乎每种处理器都支持特定异常处理,中断是异常中的一种。有时候我们衡量一个操作系统的时候实时性就是看os最短响应中断时间以及单位时间内响应中断次 ...
-
关于ARM的一些基本概念,大家可以参考我之前的文章:《0.到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc?一文帮你梳理基础概念【科普】》0. 如何学习arm?ARM的知识点很多很杂,很多同学都遇到过类似的问题, ...
-
线程调度的几个基本知识点多线程并发执行时有很多同学捋不清楚调度的随机性会导致哪些问题,要知道如果访问临界资源不加锁会导致一些突发情况发生甚至死锁。关于线程调度,需要深刻了解以下几个基础知识点:调度的 ...
-
废话I2C其实肝的我挺难受的,通讯协议这种规范往往可以抠出很多的细节,看了波叔的文章《万变不离其宗之I2C总线要点总结》,很详细。我打赌我还不会I2C,因为涉及到很多技术细节,在实际项目中往往是会被忽略的问题 ...
-
一、计算机架构在了解计算机架构之前,我们先来认识几位对计算机的发明做出关键共享的几位大佬。1. 巴贝奇机械计算机之父,英国贵族,曾孤军奋战下造出的第一台差分机,运算精度达到了6位小数,后来又设计了20位精 ...
-
笔试题笔试题1. ARM指令和中B和BLX的区别?B: 跳转执行B 指令的格式为:B{条件} 目标地址B 指令是最简单的跳转指令。一旦遇到一个B 指令,ARM 处理器将立即跳转到给定的目标地址,从那里继续执行。注意存储在跳转 ...
-
一、异常(Exception)异常是理解CPU运转最重要的一个知识点,几乎每种处理器都支持特定异常处理,中断是异常中的一种。有时候我们衡量一个操作系统的时候实时性就是看os最短响应中断时间以及单位时间内响应中断次 ...
-
1. 问题 粉丝提问:某个函数指针的使用:编译时出错了。type defaults to 'int' in declaration of 'on_touch_messgae_handle'[-Wimplicit-int] typedef(*on_touch_messgae_handle)(touch_message_t);粉丝源码如下 ...
-
来源:https://segmentfault.com/a/1190000008850005【导读】:树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。在面试环节中,二叉树也是必考的模块。本文主要讲二叉树操作的相关知识,梳理面试常考的内 ...
-
本文章由网友:邓工 投稿,VX:A18665908735 欢迎大家加技术大拿好友。问题描述起因:最近公司要做一个4G模块带GNSS(全球导航卫星系统)定位功能的产品,上传传感器数据和设备定位数据到服务器上,我们选择了si ...
-
一、问题 为啥内核有的变量没有初始化就敢直接使用?二、分析 看上图,其中的5747行的变量nid的确没有定义,就直接使用了,这么做没有问题吗?其实大家仔细看一下,5765行是一个宏,到内核源码去找该宏的定义:linu ...
-
最近又看到一则让人十分痛心的消息,南京一名即将当父亲的程序员,在准备出门时突发脑溢血倒下了……2020年6月7日,硕士毕业于哈尔滨工业大学的张朝晖发了一条朋友圈“致敬百年,引领未来”,这是一条庆祝他的母校 ...
-
嵌入式工程师到底要不要学习ARM汇编指令?网上搜索这个问题,答案很多,大部分的建议是不要学汇编,只要学C语言。而一口君作为一个十几年经验的驱动工程师,个人认为,汇编语言还是需要掌握的,想要搞精、搞深,汇 ...
-
推荐关注下方公众号学习更多Linux、驱动知识!一、前言 很多粉丝问我,我的Linux和嵌入式当初是如何学习的?其实彭老师在最初学习的过程中,走了相当多的弯路:有些可以不学的花了太多的时间去啃有些作为基础必须优 ...
-
1.什么是线程?linux内核中是没有线程这个概念的,而是轻量级进程的概念:LWP。一般我们所说的线程概念是C库当中的概念。1.1线程是怎样描述的?线程实际上也是一个task_struct,工作线程拷贝主线程的task_struct, ...
-
前面文章链接如下:《从0实现基于Linuxsocket聊天室多线程服务器模型1》《从0实现基于Linuxsocket聊天室多线程服务器一个很隐晦的错误2》《从0实现基于Linuxsocket聊天室实现聊天室的登录、注册功能3》上文中,我们 ...
-
ARM系列文章合集如下:《从0学arm合集》本文基于三星Cortex-A9架构,Exynos4412讲解I2C原理、以及基于I2C的mpu6050陀螺仪的数据读取实例(包括在裸机模式下数据的读取以及基于Linux驱动的读取)。还会分析Linux内核 ...
-
ARM系列文章合集如下:《从0学arm合集》0. 前言Uart在一个嵌入式系统中是一个非常重要的模块,他承担了CPU与用户交互的桥梁。用户输入信息给程序、CPU要打印一些信息给终端都要依赖UART。本文将以Exynos4412的UART ...
-
本篇文章是彭老师第一次在B站直播间,边直播边记录笔记,视频已经上传到B站。现在完善整理成该篇文章,有想学习uboot启动的代码详细流程的老铁可以进入我B站空间配合视频一起学习。 B站用户名:一口LinuxARM系列文 ...
-
问题描述:某个函数fun_1()是在lib内,没法修改的,在程序中大量的使用了该函数,现在想把原本fun_1失效(现在失效的方法是#define fun_1(..)),用另外一个函数fun_2(),可是fun_2最后也需要调用fun_1,上面的失效方法 ...
-
前言有粉丝问我到底什么是ARM,搞不清楚Cortex、arm内核、arm架构、ARM指令集、soc这些概念都是什么关系,下面一口君给大家整理一下关于ARM相关的一些概念。1、ARM既可以认为是一个公司的名字,也可以认为是对一类 ...
-
一、中断概念操作系统中,中断是很重要的组成部分。出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。有了中断系统才可以不用一直轮 ...
-
作为过来人,我发现很多程序猿新手,在编写代码的时候,特别喜欢定义很多独立的全局变量,而不是把这些变量封装到一个结构体中,主要原因是图方便,但是要知道,这其实是一个不好的习惯,而且会降低整体代码的性能 ...
-
B站Linux驱动入门视频已经更新到25节了,还有几期,驱动第一期就更新完毕。很多粉丝留言问我如何搭建视频中的虚拟机环境,本篇文章手把手教你。要想节省时间,直接获取彭老师安装好的虚拟机,也可以后台回复 :u ...
-
学习ARM,就必须要学习ARM指令,ARM指令是CPU提供给我们的接口,是我们打开CPU这个潘多拉魔盒的钥匙。ARM指令有很多,为了让大家能快速上手,一口君整理了一些对我们最有帮助的指令。keil软件的操作,可以参考第一 ...
-
2、奇妙的"结构体" 今天讲解这块内容,主要是受上篇文章结构体内部对齐的影响,来重新为大家介绍一下结构体(如果小伙伴对结构体的基础知识还不具备的话得回头看一下相关C语言的书籍). 结构体:字面上的 ...
-
SPI概述Serial Peripheral interface 通用串行外围设备接口是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI, ...
-
学习Linux搭建环境,参考下面文章:《linux驱动、ARM学习环境搭建》Linux必须掌握的一些基础知识点参考下面文章:《Linux入门的基础知识点汇总,有这篇就够了》一、变量的使用 1. 变量命名定义变量时,变量名不加美 ...