arm-A7中断
Linux中中断在linux在中,嵌套中断被被禁止。回顾:单片机中,嵌套中断是当前中断发生时,被优先级更高的中断打断,优先执行级别更高的中断。
由于Linux的异步I/O、进程调度等很多重要操作都依赖于中断,中断对于内核的运行非常重要,在屏蔽中断期间所有的中断都无法得到处理,因此长时间屏蔽中断是很危险的,这有可能造成数据丢失乃至系统崩溃等后果。这就要求在屏蔽了中断之后,当前的内核执行路径应当尽快地执行完临界区的代码。
向量表中保存了一系列的跳转指令,当系统发生异常时,由处理器负责将程序执行流转到向量表中的跳转指令,最常见的就是中断向量,应用工程师只需要使用固定的函数名编写中断处理程序,在中断发生时该中断处理程序就会被自动调用,这背后的实现就是中断向量表的功劳。
在 armv7 中,中断向量表可以设置在两个地址:0x00000000 和 0xffff0000,由协处理器 cp15 的 SCTLR 的 bit13 来控制,默认情况下,中断向量表的位置在 0x00000000,实际上,对于操作系统而言,比如 linux,会更倾向于将中断向量表放在 0xffff0000 处,因为 0 ...
linux 内核移植
笔记还没上传。
make: *** arch/arm: 是一个目录。 停止。今天编译Linux内核源码时,使用 make -j16,会报出make: *** arch/arm: 是一个目录。 停止。的错误。原因是:在Makefile中添加:ARCH ?= armCROSS_COMPILE ?= arm-linux-gnueabihf-时,在arm后面多打了一个空格!
arm-A7中断
有时候我们很多文件需要链接到指定的区域,或者叫做段里面,比如在 Linux 里面初始化函数就会放到 init 段里面。因此我们需要能够自定义一些段,这些段的起始地址我们可以自由指定,同样的我们也可以指定一个文件或者函数应该存放到哪个段里面去。
要完成这个功能我们就需要使用到链接脚本,看名字就知道链接脚本主要用于链接的,用于描述文件应该如何被链接在一起形成最终的可执行文件。其主要目的是描述输入文件中的段如何被映射到输出文件中,并且控制输出文件中的内存排布。比如我们编译生成的文件一般都包含 text 段、 data 段等等。
链接脚本的语法很简单,就是编写一系列的命令,这些命令组成了链接脚本,每个命令是一个带有参数的关键字或者一个对符号的赋值,可以使用分号分隔命令。像文件名之类的字符串可以直接键入,也可以使用通配符“*”。最简单的链接脚本可以只包含一个命令“SECTIONS”,我们可以在这一个“SECTIONS”里面来描述输出文件的内存布局。我们一般编译出来的代码都包含在 text、 data、 bss 和 rodata 这四个段内,假设现在的代码要被链接到 0X10000000 这个地址 ...
uboot详解--初级
从事嵌入式音视频AI开发中,需要多次使用uboot这个bootleader,本文用来记述我工作学习中所学到的知识点和心得本文主要是为了能够运行起uboot,裁减后面有时间再学习。首先第一步,删除uboot目录下没有用的到的配置文件,太多了,不需要,架构和板子支持的没法动,删除就会出错。
链接脚本详解• 拿到半导体厂商给的uboot,进行第一次编译,编译后得到一个链接文件。从链接文件开始分析,链接的后缀为.lds在使用imx6ull进行编译时,要把程序的起点链接到0x878000000
1arm-linux-gnueabihf-ld -Ttext 0X87800000 -o ledc.elf $^
这样所有文件都会链接到这个地址区。
分析得到uboot程序启动入口为_start。
123OUTPUT_FORMAT( ("elf32-littlearm", , "elf32-littlearm", , "elf32-littlearm") )OUTPUT_ARCH(arm)ENTRY(_start)
•上面代码 ...
蓝牙
角色认识master 和slave属于建立连接之后的概念,一旦建立连接,scanner角色变为master,advertiser变为slave。 根据应用场景的需求,一个设备可以是master,也可以是slave或者二者兼备。 初始化建立连接的设备称为master,负责广播的并接收连接请求的设备称为slave。
无题
1、设备树学习的关键问题1-1、设备树是什么(1)device tree,设备树,是一种linux内核中采用的参数表示和传递的一种技术。(2)dts,device tree source ,设备树源文件 一般的给改设备树就在这里进行。(3)dtc,device tree compiler,设备树编译/调试工具。(4)dtb,device tree blob,二进制设备树镜像。
1-2、为什么需要设备树(1)典型需求就是内核设备驱动,但不止可以用在驱动上,也可以用在uboot向内核的传参。(2)驱动源码包括2大部分:策略(操作函数)和数据(硬件信息)。(3)早期在策略和数据都在kernel中。
1-3、设备树如何工作的(1)驱动开发者编写或者改写dts ,适配硬件和自己的需求。(2)make uImage时,kernel会先编译出dtc,然后用dtc加工成dtb。(3)uboot启动kernel时,将uImage和dtb都准备好并告诉uImage在哪里找到dtb。(4)kernel启动初期会调用内部的函数去解析dtb,得到硬件信息,并组装成数据结构,配合策略函数工作。 ...
驱动编写(linux)
前置123456789101112131415161718192021222324252627282930查看设备节点驱动注册成功生成设备节点ls /dev/ 查看加载的设备查看设备号主设备号 cat /proc/devices 包括字符设备和块设备MISC设备驱动次设备号cat /proc/misc主次设备号等信息ls /dev/dev_name -al查看类class_create函数创建成功后,使用命令ls /sys/class查看查看设备device_create函数创建成功后,使用命令ls /dev/查看查看已加载的模块lsmod设备树查看设备树节点ls /proc/device-tree查看设备树属性在设备树相应目录下,cat [Properties]查看内核打印信息dmesg查看设备树节点ls /proc/device-tree
https://zhuanlan.zhihu.com/p/425420889 文章记录
1、字符设备1-1、加载驱动模块12比如insmod drv.ko
如果drv.ko设备存在了依赖关系,那么就必须先加载所依赖的模块, ...
xml语法规则
xml读写规则 # 避免 “:” 字符。冒号会被转换为命名空间来使用 表格定义:标签结构 数据对应:指定元素
所有的标题都用<>来表示。
示例
<新闻>
<新闻>
<id><1001><\id>
<标题><尚......><\标题>
<>......
......
<\新闻>
<id><1002><\id>
<标题><JAVA......><\标题>
<>......
...
机器视觉、音视频开发
1、概述 ipc的英文是ipcamera,没入行之前认为这是嵌入式驱动相关的
工作,后来才知道不是。
基本的过程:采集图像,进行存储,进行传输。
IPC开发为目前嵌入式前沿技术最为密集的领域,
涉及AI,图像识别,人脸识别,动作识别,各种算法等。
1-1、原理
首先是外景的光线进入镜头,经过一定调焦,打到图像传感器上,
也就是sensor,转换成模拟信号,然后通过A/D转换,转换成数字信号。
然后经过DSP编码处理。(如果出现模糊等各种情况就可以进行追溯,
比如是镜头问题等)
数据消费中的其他指的是传给其他的平台,进行协议的对接。
1-2、方案介绍 当有的人问你,你们公司的摄像机是基于什么方案,什么平台做的
外围的配件、电机、摄像头、麦克风等一般都是从供应商拿的,而主控芯片,
就是从方案代理公司拿的,所以就是,主控是什么类型的,方案就是基于什
么来做的。一般的方案公司有:海思、富瀚、瑞芯微,全志、索尼。
所以就形成了一个上下游:芯片制造、芯片代理、方案代理、安防公司。
一般从方案公司拿到芯片和sdk。
sdk包:具体有arm板 ...
onvif协议
probe为onvif连接时,会产生一个广播,一般情况下不影响整个协议。
WSDL的web服务公共接口。
之间的关系,onvif协议以soap协议为基础,
而soap又是用WSDL进行规范,所以onvif相当于
规范了WSDL。
理解上:onvif = 服务端 +客户端 =(web services + rtsp)+ 客户端 =( (WSDL + soap)+
rtsp)+ 客户端
WSDL是服务端用来向客户描述自己实现那些请求,发送请求时需要带上那些参数xml格式
soap是客户端向服务器端发送请求时xml的参数格式。
web services是实现摄像头控制(比如一些参数配置、摄像头上下左右(PTZ)控制);rtsp
实现摄像头传输,web services指ipc控制到具体的技术实现,进行技术交互,其实和http差不多,
客户端类似http post的格式向服务端发送请求,然后服务端响应客户端请求。
onvif中的profiles是什么?
onvif提供了很多的profiles概要文件,用来规范onvif设备端与onvif客户端的通信标准。目前已经发
布的profile文件主 ...