自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 收藏
  • 关注

原创 数字系统名词解释

CRG:Clock and Reset Generator,是系统时钟、时钟总线等时钟源产生器。CGM:内部IPLL时钟参考源。主要用来给flexray提供时钟源。他们的区别,一个是以外部晶振为时钟源来给系统提供一个时钟。一个是以内部时钟源来给某些模块及功能提供时钟PMU:power manager unit...

2021-06-08 17:12:57 584

原创 ARMv8 异常处理简介

内核稳定性问题复杂多样,最常见的莫过于“kernel panic”,意为“内核恐慌,不知所措”。这种情况下系统自然无法正常运转,只能自我结束生命,留下死亡信息。诸如:“Unable to handle kernel XXX at virtual address XXX”“undefined instruction XXX”“Bad mode in Error handler detected on CPUX, code 0xbe000011 -- SError”......这些死亡信息是

2021-05-20 15:00:46 3113

原创 demosiac

Demosiac是整个ISP imaging pipeline的核心算法,将Bayer pattern的图像转换成RGB。去马赛克算法是用于从覆盖有颜色滤波器阵列(CFA)的图像传感器输出的不完整颜色样本重建全色图像的数字图像处理。 也称为CFA插值或颜色重建。 重建图像通常在均匀着色的区域中是精确的,但是具有分辨率(细节和清晰度)的损失并且具有边缘伪影。1. Bayer Pattern...

2020-04-26 21:53:55 926

转载 CMOS工作原理和概念

关于大像素和高像素(高像素密度)的争论从D70和350D时代就开始了,到了D700和5D2的时代不仅没有争论出正确的结论,反而得出了一个似是而非的结果:高像素好。包括一些号称专业的网站在D3s发布后认为D3s没有大的改进,其理由就是像素没有提高。特别是某些佳能的FANS更是坚信高像素比大像素好,因为佳能单反相机的像素数量在D3X出现之前一直领先于尼康的单反相机。起先是350D的800万像素...

2019-05-05 16:55:12 12958

转载 双目

1.前言戏说双目立体视觉是基于视差原理,由多幅图像获取物体三维几何信息的方法。在机器视觉系统中,双目视觉一般由双摄像机从不同角度同时获取周围景物的两幅数字图像,或有由单摄像机在不同时刻从不同角度获取周围景物的两幅数字图像,并基于视差原理即可恢复出物体三维几何信息,重建周围景物的三维形状与位置。双目视觉有的时候我们也会把它称为体视,是人类利用双眼获取环境三维信息的主要途径。从目前来看,随着...

2018-09-09 23:03:28 2916

转载 3DTOF

1.1 TOF初探TOF是Time of flight的简写,直译为飞行时间的意思。所谓飞行时间法3D成像,是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉冲的飞行(往返)时间来得到目标物距离。这种技术跟3D激光传感器原理基本类似,只不过3D激光传感器是逐点扫描,而TOF相机则是同时得到整幅图像的深度信息。TOF相机与普通机器视觉成像过程也有类似之处,都是由光源、光学部...

2018-09-09 23:02:10 3429

转载 设备树语法讲解

转自:https://www.cnblogs.com/xiaojiang1025/p/6131381.htmlLinux设备树语法详解概念Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离。在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。引入了设备树之后,驱动代码只负责处理驱动的逻辑,而关于设备的具体信息存放到设备树...

2018-09-09 19:08:50 26483 7

原创 驱动的编写

A、PLATFORM驱动,虚拟总线的驱动。1、写好设备树节点,中断,GPIO,别名等。2、在驱动中新建 platform_driver结构体test_device_driver和of_device_id。注意:of_device_id必须多出一行空行。在platform_driver中写入probe和remove函数,以及和of_device_id绑定。3、在INIT中调用regist...

2018-09-09 19:08:27 6032

原创 uboot下通过读取script(存放在nandflash)用于启动加载

1、编辑好script nand read 0x1000000 0x180000 0x400000if fpga loadb 0 0x1000000 0x400000;then    echo Init VDMA    mw.l 0x40600010 1    mw.l 0x40600010 0...2、通过UBOOT的打包工具,mkimage将其打包bootnand.img 影像...

2018-09-09 19:08:09 1172

原创 uboot | fsbl中如何启动SPI或者GPIO等外设

1、条件:基于XILINX uboot。2、使用SPI。其实SPI控制器使用,在每个步骤都可以使用,包括在fsbl等都可以。原理就是配置控制器的寄存器。在FSBL中使用SPI:(1)、初始化SPI控制器0或者1,具体看vavido中硬件。调用XSpiPs_Config *SpiConfig;XSpiPs Spi0SpiConfig = XSpiPs_LookupConfig(id)...

2018-09-09 19:07:50 2473

原创 如何使用xilinx sdk进行调试。

1、在FILE->NEW->新建应用程序。2、右键.elf文件,进行debus_as...进行调试。可以建立SPI等一些调试例子,来验证外设是否正常等。前提是如果需要加载fpga,则需要先进行FPGA的加载。在xilinx_tool中进行加载。...

2018-09-09 19:07:39 12712

原创 内核和UBOOT 利用编译规则区别不同

KERNEL:在 /arch/arm/configs 中根据根目录下的.config修改成不同的名字的文件;例如:需要编译一个test的,首先,先利用.config改好配置,将.config 拷贝到arch/arm/configs 目录下,将名字修改为xilinx_zynq_test_defconfig. 而后在根目录下编译:就可以 1、make xilinx_zynq_test_defconfi...

2018-08-07 17:50:52 572

原创 2018.03.14 - 进程上下文和中断上下文

一.什么是内核态和用户态内核态:在内核空间执行,通常是驱动程序,中断相关程序,内核调度程序,内存管理及其操作程序。用户态:用户程序运行空间。二.什么是进程上下文与中断上下文1.进程上下文:(1)进程上文:其是指进程由用户态切换到内核态是需要保存用户态时cpu寄存器中的值,进程状态以及堆栈上的内容,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。(2)进程下文:其是...

2018-03-30 17:26:49 193

转载 2018.03.15 -软中断和硬中断

硬中断:1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU...

2018-03-30 17:26:43 174

原创 2018.03.19 -原子操作和原子变量

原子操作       原子操作指的是不可再分的指令操作,即在执行原子操作时不可能被打断,要么原子操作没有执行,要么已经执行完毕。       原子操作的实现必须需要硬件的支持,操作系统仅仅是在硬件指令的基础之上进行一次封装。对于没有实现原子操作的硬件,则需要操作系统从软件算法层面进行支持。linux下的实现       linux下原子操作的数据结构是atomic_t,其定义放在<linux...

2018-03-30 17:26:37 1342

转载 2018.03.19 -编译器优化以及volatile

首先看一下单词“volatile”的释义:volatile [ˈvɑlətl]adj.  易变的,不稳定的; (液体或油)易挥发的; 爆炸性的; 快活的,轻快的;下边是“C++ Primer”对volatile讲解的部分摘录:“当一个对象的值可能会在编译器的控制或监测之外被改变时,该对象应该声明为volatile。因此,编译器执行的某些例行优化行为不能应用在已经指定为volatile的对象上……v...

2018-03-30 17:26:31 267

原创 2018.03.27 -AMBA协议(AHB APB AXI等)\外设通信协议(SPI CAN等)

从最开始AMBA1.0版本定义的 高级系统总线(asb)和高级外设总线(apb)到最新版本 AMBA4.0中兼容AHB APB的同时,添加了AXI4规范(ARM 和 XILINX 共同制定的SOC内IP互联的规范),高级跟踪总线 ATB,等。AHP APB AXI等都可以认为是作用域CPU内部的总线协议或者说规范,然而我们会常提到外设通信的SPI CAN总线,实际是SPI控制器或者CAN控制器和外...

2018-03-30 17:26:24 1556

原创 2018.03.16 - 为什么中断处理函数中不能出现阻塞

1、 中断处理的时候,不应该发生进程切换,因为在中断context中,唯一能打断当前中断handler的只有更高优先级的中断,它不会被进程打断,如果在 中断context中休眠,则没有办法唤醒它,因为所有的wake_up_xxx都是针对某个进程而言的,而在中断context中,没有进程的概念,没 有一个task_struct(这点对于softirq和tasklet一样),因此真的休眠了,比如调用了...

2018-03-30 17:26:15 3943

转载 2018.03.28 -Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

转自: http://kyang.cc/栈是什么?栈有什么作用?首先,栈 (stack) 是一种串列形式的 数据结构。这种数据结构的特点是 后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈顶 top) 进行 推入 (push) 和 弹出 (pop) 操作。根据栈的特点,很容易的想到可以利用数组,来实现这种数据结构。但是本文要讨论的并不是软件层面的栈,而...

2018-03-30 17:26:08 230

原创 .a .so .a-->.so编译

测试代码hello.c hello.hmakefile:CFLAGS = -g -O2  -Wall -Werror -Wno-unused -fPICCXXFLAGS = -fPIC -sharedhello.o:hello.c hello.hgcc -c $(CFLAGS) $(CXXFLAGS) hello.clibhello.so:hello.o

2018-02-09 17:38:27 230

转载 嵌入式系统Linux内核开发工程师必须掌握的三十道题

嵌入式系统Linux内核开发工程师必须掌握的三十道题     如果你能正确回答以下问题并理解相关知识点原理,那么你就可以算得上是基本合格的Linux内核开发工程师,试试看!    1) Linux中主要有哪几种内核锁?Linux的内核锁主要是自旋锁和信号量。自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙

2018-02-09 15:31:19 515

原创 ubifs 文件系统疑问

The UBI and UBIFS images depend on parameters of the flash they are going to be used on. Namely, you have to know the following characteristics of the flash before creating images:MTD partition si

2018-01-26 17:24:57 598

原创 tslib和QT库连用的问题

问题:近期将 机器中的 qt5.5的库换成了 qt5.6的库,出现触摸点击同一个点出现不一样的坐标问题,导致在QT应用层会出现滑动的动作。1、从QT应用层 到QT 源码库--》tslib读数接口 --》驱动接口。查询整个数据流,发现,在使用QT源码调用tslib的接口读取坐标的时候,会出现坐标变化的情况,在QT源码的qtslib.c文件中,在readMouseData函数中查看数据发生

2017-12-29 17:08:34 2949

原创 将qt help移植到arm(xilinx)-linux

1、交叉编译好assistant  使用前面提到过的编译qt-everywhere-opensource-src-5.6.2库的方法,将其中-make tools 和skip qttool 去掉。编译好后,在安装目录下会有assistant应用程序。2、按照QT官网的要求,编辑好qhcp和qhp 文件,并且编译好放入到根文件系统中。3、在应用程序中启动该assistant服务,并指定服务浏

2017-12-20 17:25:38 309

原创 poppler xilinx交叉编译

1、编译各种外部库://fontconfig use./configure CC=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-gcc --prefix=/home/david/QT5/libfontconfig --with-arch=ARCH --host=arm-xilinx-linux-

2017-12-20 16:56:09 632

转载 cmake 交叉编译

CMake交叉编译配置    很多时候,我们在开发的时候是面对嵌入式平台,因此由于资源的限制需要用到相关的交叉编译。即在你host宿主机上要生成target目标机的程序。里面牵扯到相关头文件的切换和编译器的选择以及环境变量的改变等,我今天仅仅简单介绍下相关CMake在面对交叉编译的时候,需要做的一些准备工作。    CMake给交叉编译预留了一个很好的变量即CMAKE_TO

2017-12-14 16:19:14 395

转载 poll

poll函数讲解       当前对poll(); 函数的讲解参考《UNIX系统编程》P98 poll() 函数。       poll(); 函数与select(); 函数类似,但是,它是用文件描述符而不是条件的类型来组织信息的。也就是说,一个文件描述符的可能事件都存储在 struct pollfd 结构中。与之相反,select 用事件的类型来组织信息,而且,读、写和出

2017-12-06 15:13:31 440

原创 qt-everywhere-opensource-src-5.6.2 编译

1、http://download.qt.io/official_releases/qt/5.6/5.6.2/single/ 下载源码,解压。2、QMAKESPEC 环境变量的设置,指定QT/qtbase/mkspecs下编译器描述文件夹的路径3、mkspecs下创建自己服务器交叉编译器描述目录,我的目录为xilinx,所以为arm-xilinx。。。,直接复制linux-arm-gnue

2017-11-24 10:01:52 13743 1

原创 tslib库编译

sudo ./configure CC=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-gcc CXX=/home/david/work/zynq/CodeSourcery-master/bin/arm-xilinx-linux-gnueabi-g++ --host=arm-linux --prefix=

2017-11-23 16:34:13 315

转载 select

转:https://www.cnblogs.com/king-77024128/articles/2741180.htmlselect阻塞方式block,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回。使用Select就可以完成非阻塞non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回

2017-11-16 17:40:45 319

转载 spin and mutex lock

http://blog.csdn.net/kyokowl/article/details/6294341POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(C

2017-10-09 16:58:37 245

转载 gdb

1、程序是和网络相关的,调试期间经常地收到SIGPIPE,导致gdb停下来。看了一下gdb info,解决方法很简单。用handle命令设置一下缺省signal的处理行为就可以了:   handle SIGPIPE nostop如果连提示信息都不想看见,就可以这样设置:   handle SIGPIPE nostop noprint就可以了。其他相关信号也可以类似处理。

2017-09-25 20:00:00 246

原创 QT 交叉编译环境搭建

1、下载:qt-create下载qt-everywhere-opensource-5.5.1.tar.gz交叉编译工具链arm-xilinx-linux-gnueabi-2、解压qt-everywhere-opensource-5.5.1.tar.gz1、cd qt-everywhere-opensource-5.5.1/qtbase/mkspecs

2017-07-21 15:31:23 2442

转载 sudo

sudo与sudoerssudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如halt,reboot,su等等。这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。它的特性主要有这样几点:  § sudo能够限制用户只在某台主机上运行某些命令。

2017-07-21 15:09:20 1028

转载 git 学习

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000

2017-07-13 15:36:13 222

转载 Linux内核配置选项简介

Linux内核配置选项简介 Gentoo LinuxGentoo内核(gentoo-sources)特有的选项Gentoo Linux supportCONFIG_GENTOO_LINUX选"Y"后,将会自动选中那些在Gentoo环境中必须开启的内核选项,以避免用户遗漏某些必要的选项,减轻一些用户配置内核的难度.建议选"Y".Linux dy

2017-07-13 08:55:48 8935

原创 shell 解释器切换

zsh切换bash bash切换zsh切换bashchsh -s /bin/bash~/.bashrc 配置文件切换zshchsh -s /bin/zsh~/.zshrc 配置文件查看当前的shellecho $SHELL

2017-07-11 15:57:44 2198

转载 mdev的使用以及mdev.conf的规则配置

转:http://www.cnblogs.com/hnrainll/archive/2011/06/25/2090182.htmlmdev的使用以及mdev.conf的规则配置--busyboxmdev是busybox下的udev的精简版,适合在嵌入式系统下管理设备但mdev会把所有的设备文件都动态地创建在/dev/目录下,如果程序使用dev目录子目录下的设备,就必

2017-07-10 10:22:24 2428

转载 设备模型之kobject,kset及其关系

设备模型之kobject,kset及其关系 2012-07-07 10:09:37分类: LINUX设备驱动基础0:设备模型之kobject,kset及其关系Linux2.6以后的设备驱动,都是在设备模型的基础上构建的,因此,要编写linux下的设备驱动程序,不论是usb设备,pci设备等,都需要了解设备模型。设备模型的基础结构体主要是kob

2017-05-26 16:39:51 324

原创 linux 根据设备树注册设备

/platform.c (1)int of_platform_populate(struct device_node *root,const struct of_device_id *matches,const struct of_dev_auxdata *lookup,struct device *parent){struct device_node *child;

2017-05-26 15:22:54 2353

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除