- 博客(122)
- 资源 (1)
- 收藏
- 关注
原创 PCIe学习笔记(一)——硬件设备识别扫盲篇(史无前例的好文章)
首先用一张图来直观的呈现出要了解PCIe,我们需要知道的一些基本概念。参考文章链接:https://www.cnblogs.com/szhb-5251/p/11620310.htmlhttps://www.cnblogs.com/yangxingsha/p/11551472.htmlhttps://blog.csdn.net/kunkliu/article/details/9438035...
2020-02-24 09:40:04 15823 4
原创 virtualbox 开启虚拟化支持kvm VT-x/AMD-V 功能
在virtualbox的 设置->系统->处理器中想要打开“启用嵌套VT-x/AMD-V 功能”时,发现是灰色的无法选择,但既然有这个选项一定有可以开启的方法。
2023-03-12 21:47:39 5838
原创 git入门(8)- git detached from commitID
当提交代码时,有可能会出现代码所在的分支跟自己创建分支不一致的情况,这时候往往不容易察觉,直到提交代码时,提示:git detached from XXXX这时候的不要慌张,我们要做的首先是将当前的分支切到一个我们可以掌控的分支上。#git branch temp xxxx然后切到想要使用的分支上,例如:#git checkout master然后,删除掉刚刚产生的temp分支,#git branch -D temp这时候再重新提交文件内容。当然有可能这时候在temp分支上有我们想要的commit内容。只
2022-07-06 23:58:31 668
原创 ubuntu20.04 cuda opencv
CUDA Toolkit 11.7 Downloads | NVIDIA Developer cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.1/modules .. -DWITH_CUDA=1 -DENABLE_FAST_MATH=1 -DCUDA_FAST_MATH=1 -DWITH_CUBLAS
2022-06-23 23:37:09 1233
原创 原子操作的原理和本质
本文重点:概念:原子操作内容:原子操作的本质和实现基本概念:分解概念:涉及的知识点1、 并行和并发2、 如何保证操作的原子性3、 cache一致性4、 原子操作的实现-软件5、 原子操作的实现-硬件详细解释:1、 并行和并发原子(atomic):是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为“不可被中断的一个或一系列操作”。并发:单核cpu上,当多个线程在在操作时,把cpu运行时间划分为若干时间段,再将时间段分配给各个线程执行,在一个时间
2021-09-21 09:12:33 1442 1
原创 深入理解了一下ioctl
常见使用场景ioctl通常用作用户空间对内核空间的设备进行操作的接口。也就是当有一些操作需要几个模块协同工作,或者说有些操作放在用户空间操作更合适的时候使用。比如我们想通过环境关照的明暗变化调整屏幕或者数码管的显示亮度的时候就可以通过ioctl获取周围环境光强度,然后通过ioctl对屏幕亮度或者数码管的亮度进行设置。连接纽带在使用ioctl为什么能够在用户空间控制内核空间的模块?1 内核模块必须是可操作的。首先模块必须注册为设备文件,这样用户空间才能打开文件。其次文件必须支持文件的基本操作,
2021-05-06 09:19:51 667
原创 设备树FDT是如何被内核识别的
设备树(Flat Device Tree)是在Linux3.0 被引入的。起因是Linux忍受不了ARM驱动程序需要编写platform device部分的代码。 这里不得不提引导程序,一般情况下,Linux使用 U-Boot作为bootloader,那么uboot必然承担这初始化Linux运行需要的环境条件的责任。 在设备启动的过程中,通常会使用gpio的组合或者不同的电阻来标明设备的不同版本或者不同的产品形态。那么如果设备文件中存在多个dtb文件的时候,则会根据硬件的不同版本选择对应...
2021-04-11 15:24:33 1033
原创 Linux 下UVC&V4L2技术简介(四)--介绍下camera相关的硬件部分
花了很久的时间终于画了这张丑图,往往这种东西很有内涵,哈哈哈哈哈哈哈哈首先贴一下参考文章链接:https://blog.csdn.net/Edmund_G/article/details/22986973?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158364999119725247644924%2522%252C%2522...
2020-03-10 11:22:38 945 1
原创 Linux 下UVC&V4L2技术简介(三)
先抛开V4L2的架构以及为用户提供的操作接口不提。我们在了解一个设备怎么塞入一个框架的时候,我们其实最关键的就是看到代码以及结构体的描述。下面我们就来看一下这个摘自内核的描述:文件取自linux-xlnx-xilinx-v2017.4\include\media文件夹下,大部分我们用的结构体都在v4l2-device.h和v4l2-dev.h中有描述。/** * struct video_d...
2020-03-04 21:08:47 801
原创 谈论bringup我们到底在谈论什么?
首先用两张图来概述一下bringup导致需要做什么工作。首先我们要知道各个阶段的开发任务和实施人员。作为一个嵌入式软件开发人员在bringup的过程中我们需要掌握的知识。...
2020-02-24 20:29:15 23699 6
原创 ARM汇编寄存器简介
通常我们在看启动代码的时候会需要用到汇编,或者在出现问题反汇编可以查看问题的原因。这时候就需要对汇编指令和寄存器的用途有比较清楚的认识。下面就是对寄存器的简单描述:ARM 32位寄存器ARM汇编器对ARM的寄存器进行了预定义,所有的寄存器和协处理器名都是大小写敏感的.预定义的寄存器如下:Ro-R15和r0-r15a1-a4(参数,结果或者临时寄存器,与r0-r3同意)v1-v8(变量寄存...
2020-02-24 12:08:40 1968
原创 单片机入门---ADC采样
ADC:analogy-digital converter 模拟-数字转换器。首先可以参考这篇文章,对ADC采样有个正确的认识。https://blog.csdn.net/euxnijuoh/article/details/81066739在ADC的初始化过程中,有两个很有意思的参数: hadc.Init.ContinuousConvMode = DISABLE; hadc.Init...
2020-01-14 13:16:34 4735 2
原创 单片机入门---最重要的外设控制(GPIO)
本文中主要介绍STM32中的GPIO,在最后简单介绍下PIC的IO设置。基本功能需求我们在使用STM32的管脚时,主要使用串口,I2C,SPI,或者直接作为输入输出管脚。而这些管脚的实现都是通过GPIO完成的。下面简单介绍下GPIO的四种输入模式和四种输出模式。四种输出模式首先我们回顾一下我们常用的输出形式,I2C,SPI,输出高低电平,通过外部上拉输出高电平。推挽输出:该模式下引脚...
2020-01-13 16:25:31 2818
原创 单片机入门--常见单片机PIC\STM32
这里虽说是介绍常见的单片机,实际上也只是简单的描述下我曾经在项目中使用过的单片机。PIC单片机,英文全称为Peripheral Interface Controller,翻译过来应该是物理接口控制器。顾名思义,我们使用它主要是通过这些物理接口来完成对其他设备的控制。开发环境安装PIC:https://www.microchip.com/mplab/compilershttps://www...
2020-01-13 12:08:12 3554
原创 2020失业第一天
这原本是个常规的周二的早上,而我却待业在家。昨天一天匆匆办完离职,不愿意和周围的人说再见的我迅速的离开了办公区。我是一个特别害怕说再见的人,因为我不知道再见意味着再次相见,还是再也见不到。周末在家刷了两天的抖音,甚至连看个电影的耐心都没有了。不知道是浮躁还是对有些人和事太失望了。同事发来消息说,想通过一些方法把我留下,很感激,但是也许走了会是更好的结局。因为人一生选择一次就是永久,所以我也不知道...
2020-01-07 10:11:41 835 3
原创 kdump--基于kexec的崩溃存储解决方案
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用M...
2019-11-26 21:25:06 361
原创 Android Camera实现图像复制
做VR产品的时候,有个产品的目标是做一个左右眼的摄像头,实现两个摄像头采集数据,左右分屏的显示在手机屏幕上,当时调研发现,手机因为只有一颗ISP所有一般情况下只能打开一个摄像头,所以当时考虑可以使用手机的摄像头外接一个USB camera。由于当时时间比较紧,所以调研过程中只做了屏幕的分屏显示,而没有做摄像头的输入方式。 当时采用的方法是修改图形显卡(framebuffer)的参数,使得图像在输...
2018-03-25 22:36:43 1175
原创 Android Camera获取预览流
camera获取预览流的方法有两种: 方法1 直接显示setPreviewDisplay,方法2 使用previewCallback 第一种 1 需要一个surfaceview 2在权限允许和surfaceview onCreate 成功后,打开camera,并且把surfaceview的holder设置在camera的setDisplayPreview上。 3 为Camera设置一些C...
2018-03-25 22:29:00 5255
原创 Android Camera系列学习笔记 (开篇)
以前写博客都像是随笔,看了很多大牛的博客之后,发现他们都是有计划的在组织知识体系。虽然现在水平还没到达到那样的程度,不妨也来模仿一下。首先整理下我对于Camera的理解,并且今后一定要尽快完成这部分的学习:1 Camera的App开发。 2 Camera的框架层。 3 Camera的HAL层。 4 Camera的驱动层。 5 Camera的硬件模组。我个人认为,作为一个...
2018-03-25 22:23:43 541
原创 git入门(7)-Git tags----为版本打上tags
有时候,在项目开发过程中,版本的发布可能会一直持续,在版本发布的过程中,可能用户更新的步调不一致导致在某个特定版本上,用户出现问题。当需要版本追溯时,如果版本中存在tag,则可以直接定位到版本,并确认问题是否存在。可以通过git tag查看目前有哪些tag,因为tag的命名或者标注通常都会使用版本号信息。如果想看某个标签的具体信息,可以使用git show tag-name如果看到我们想要的版本号t
2016-06-02 19:26:30 10012
原创 git入门(6)-Git checkout 和git branch分支的创建和删除
从已有的分支创建新的分支(如从master分支),创建一个dev分支git checkout -b devgit branch * dev master 可以看到git checkout -b命令相当于 创建分支: gitbranchdev切换分支: git branch dev 切换分支: git checkout dev 删除本地分支git branch -D de
2016-03-02 10:41:52 13279
原创 git入门(5)-Git revert和git reset版本的回退
git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的commit,如果需要彻底回退,只需要将本次commit * git revert HEAD 撤销前一次 commit * git revert HEAD^ 撤销前前一次 commit
2016-03-02 10:28:44 15494
原创 git入门(4)-Git rebase
每一次,当我们埋头苦干的时候,好像时空都静止了。一转头才发现,天已经渐渐亮起。想把今天的工作提交,却发现服务器的HEAD已不是昨天的它。这时候是不是倍感凄凉?还好有git rebase master使用git rebase master可以做到一些事情: 1.首先,它定位你当前检出分支和master之间的共同祖先节点(common ancestor)。 2.然后,它将当前检出的分支重置到祖先节点
2016-03-02 10:23:08 1482
原创 git入门(3)-Git pull和git fetch从远程拉取分支到本地
Git fetch 从远程分支获取最新版本到本地,并不会自动mergeGit pull从远程分支获取最新版本到本地,并且merge,所以实际上Git pull 执行了两个步骤,Git fetch将FETCH_HEAD的内容取下来Git merge FETCH_HEAD
2016-03-02 10:22:30 6352
原创 git入门(2)-Git stash保存当前的工作现场
在研发过程中,经常会遇到处理任务过程中,被更高优先级的任务打断,最早使用的方法是手动把文件进行保存,后来使用git add 和git commit把文件保存在git本地,但是这样的方法都会有很大的缺陷。保存文件,会出现很多的多余文件。而临时提交可能会引起git pull时的冲突,以及误提交的情况。那如何解决这个问题呢?git早就为我们想好了这种情况,提供了在使用git代码管理工具,进行工作管理时,保
2016-03-02 10:21:52 5217
原创 git入门(1)--提交代码的一般步骤
一般提交过程:Git add xxxx将文件添加到索引库里Git commit -m “xxxxxxxxxxxxxxx”将索引库中的文件提交git push origin :通常我们会使用git push origin HEAD:origin/将本地代码push到远程服务器上。很多人可能也和我一样有些疑问,此处的origin是什么意思?事实上,我们可以通过git remote add git_ali
2016-03-02 10:20:37 6719 1
原创 在北京打拼的意义
从很久以前就感觉到,从小到大的成长都有太多的羁绊。但是总有些东西放不下,导致到现在仍然碌碌无为,每每想到这些都有些悔不当初的滋味在心里。从实习到现在,已经整整四年的时间了,在这四年里,有忙忙碌碌为了能早点儿完成任务,加班到深夜,周末无休的日子。也有因为工作繁重而引起的内心焦躁不安。还有因为工作了然无趣却要天天耗时的待到下班的消耗激情。总之来北京的这些年一直平淡无奇的过着每个人都能过着的生活。因为工作
2015-08-03 10:50:00 3256 8
原创 Linux 下UVC&V4L2技术简介(二)
UVC camera设备目前还不是android系统的标配,并且CM里面也不支持这样的设备。
2015-03-19 10:11:16 13536 2
原创 Linux 下UVC&V4L2技术简介(一)
以前做过一点儿USB相关的东西,最近因为项目需要学习了一下多媒体的相关知识。继而想了解一下UVC和V4L2的相关知识。首先介绍两个概念:UVC:USB video class(又称为USB video device class or UVC)就是USB device class视频产品在不需要安装任何的驱动程序下即插即用,包括摄像头、数字摄影机、模拟视频转换器、电视卡及
2015-03-15 18:05:39 33386 2
原创 2014年总结
写给自己。2014年,从9月15日分割开来。上半年完成了一个芯片的FPGA阶段到产品阶段的研发过程。下半年完成了在一个创业公司充当多面手的角色,对我自己来讲我认为比较有意义的是完成了一个通用CPU的学习,完成了一个手机ROM的制作。人生的每个阶段都是不能被抹去的,尽量让那些经历成为成长的财富吧。上半年主要完成了,烧写工具的编写、nand flash驱动、nor flash驱动以及DE和
2015-02-28 23:55:40 1633 1
原创 Discuz!X3.2学习笔记(二)
Discuz!X3.2最为一款广泛使用的论坛模板,后台提供了足够强大的定制功能。但是对于需要个性化要求较高的公司来讲,这样的功能远远不能满足需求,在这样的情况下就需要进行编码实现二次开发。在这样的情况下就需要对这款产品进行深入的分析,首先需要了解产品的目录结构以及开发过程中需要使用到的各种语言。这些在前面一篇文章中已经提到过,不再赘述。因为这些都是一些笔记类型的文章,所以不是按部就
2015-01-07 20:48:26 4600 1
原创 Discuz!X3.2学习笔记(一)
最近要做一个论坛,找了一个比较成熟的模板Discuz!X3.2。几天下来见识了这个论坛功能的庞大,也学习了功能强大的后台管理。但是终究还是需要对discuz进行二次开发满足功能需求。针对discuz!X3.2初级的学习,发现还是那样,开始不爱听,后续听不懂。那怎么办呢?写篇笔记来督促自己的学习深度和进度。安装注意:1数据库前缀名要写一个复杂一点的名称,建立用户,并创建用户数据库。
2014-12-27 10:41:43 9869 1
原创 如何正确的make menuconfig
写这么个文章标题,装逼的成分很大。只是一直使用的make menuconfig的方法今天被颠覆了……网上查了一下,使用我之前方法的人也不在少数。那我总结一下自己的这个过程吧。make menuconfig ARCH=armmake savedefconfig ARCH=arm上面两行是我在AOKP上看到别人在脚本中的描述。好奇心驱使,去查看了一下,make
2014-12-16 19:00:20 11589
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人