<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[曹太强的专栏]]></title><description><![CDATA[我从来不定闹钟，因为梦想会把我叫醒]]></description><link>https://blog.csdn.net/codectq</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; codectq]]></copyright><item><title><![CDATA[virtualbox 开启虚拟化支持kvm VT-x/AMD-V 功能]]></title><link>https://blog.csdn.net/codectq/article/details/129481741</link><guid>https://blog.csdn.net/codectq/article/details/129481741</guid><author>codectq</author><pubDate>Sun, 12 Mar 2023 21:47:39 +0800</pubDate><description><![CDATA[在virtualbox的 设置->系统->处理器中想要打开“启用嵌套VT-x/AMD-V 功能”时，发现是灰色的无法选择，但既然有这个选项一定有可以开启的方法。]]></description><category></category></item><item><title><![CDATA[git入门（8）- git detached from commitID]]></title><link>https://blog.csdn.net/codectq/article/details/125650115</link><guid>https://blog.csdn.net/codectq/article/details/125650115</guid><author>codectq</author><pubDate>Wed, 06 Jul 2022 23:58:31 +0800</pubDate><description><![CDATA[当提交代码时，有可能会出现代码所在的分支跟自己创建分支不一致的情况，这时候往往不容易察觉，直到提交代码时，提示：
git detached from XXXX这时候的不要慌张，我们要做的首先是将当前的分支切到一个我们可以掌控的分支上。#git branch temp xxxx然后切到想要使用的分支上，例如：#git checkout master然后，删除掉刚刚产生的temp分支，#git branch -D temp这时候再重新提交文件内容。当然有可能这时候在temp分支上有我们想要的commit内容。只]]></description><category></category></item><item><title><![CDATA[ubuntu20.04 cuda opencv]]></title><link>https://blog.csdn.net/codectq/article/details/125436874</link><guid>https://blog.csdn.net/codectq/article/details/125436874</guid><author>codectq</author><pubDate>Thu, 23 Jun 2022 23:37:09 +0800</pubDate><description><![CDATA[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]]></description><category></category></item><item><title><![CDATA[安装包失败提示apt --fix-broken install 笔记]]></title><link>https://blog.csdn.net/codectq/article/details/125354193</link><guid>https://blog.csdn.net/codectq/article/details/125354193</guid><author>codectq</author><pubDate>Sun, 19 Jun 2022 07:45:07 +0800</pubDate><description><![CDATA[安装失败 apt --fix-broken install]]></description><category></category></item><item><title><![CDATA[在jetson nano上安装ROS]]></title><link>https://blog.csdn.net/codectq/article/details/125325187</link><guid>https://blog.csdn.net/codectq/article/details/125325187</guid><author>codectq</author><pubDate>Thu, 16 Jun 2022 23:55:03 +0800</pubDate><description><![CDATA[jetson nano 开发板安装ROS进行开发的第一篇介绍文章]]></description><category></category></item><item><title><![CDATA[原子操作的原理和本质]]></title><link>https://blog.csdn.net/codectq/article/details/120398468</link><guid>https://blog.csdn.net/codectq/article/details/120398468</guid><author>codectq</author><pubDate>Tue, 21 Sep 2021 09:12:33 +0800</pubDate><description><![CDATA[本文重点：
概念：原子操作
内容：原子操作的本质和实现

基本概念：
分解概念：涉及的知识点
1、 并行和并发
2、 如何保证操作的原子性
3、 cache一致性
4、 原子操作的实现-软件
5、 原子操作的实现-硬件

详细解释：

1、 并行和并发
原子（atomic）：是“不能被进一步分割的最小粒子”，而原子操作（atomic operation）意为“不可被中断的一个或一系列操作”。
并发：单核cpu上，当多个线程在在操作时，把cpu运行时间划分为若干时间段，再将时间段分配给各个线程执行，在一个时间]]></description><category></category></item><item><title><![CDATA[深入理解了一下ioctl]]></title><link>https://blog.csdn.net/codectq/article/details/116427225</link><guid>https://blog.csdn.net/codectq/article/details/116427225</guid><author>codectq</author><pubDate>Thu, 06 May 2021 09:19:51 +0800</pubDate><description><![CDATA[常见使用场景

ioctl通常用作用户空间对内核空间的设备进行操作的接口。也就是当有一些操作需要几个模块协同工作，或者说有些操作放在用户空间操作更合适的时候使用。比如我们想通过环境关照的明暗变化调整屏幕或者数码管的显示亮度的时候就可以通过ioctl获取周围环境光强度，然后通过ioctl对屏幕亮度或者数码管的亮度进行设置。

连接纽带

在使用ioctl为什么能够在用户空间控制内核空间的模块？

1 内核模块必须是可操作的。首先模块必须注册为设备文件，这样用户空间才能打开文件。其次文件必须支持文件的基本操作，]]></description><category></category></item><item><title><![CDATA[设备树FDT是如何被内核识别的]]></title><link>https://blog.csdn.net/codectq/article/details/115599951</link><guid>https://blog.csdn.net/codectq/article/details/115599951</guid><author>codectq</author><pubDate>Sun, 11 Apr 2021 15:24:33 +0800</pubDate><description><![CDATA[设备树（Flat Device Tree）是在Linux3.0 被引入的。起因是Linux忍受不了ARM驱动程序需要编写platform device部分的代码。
    这里不得不提引导程序，一般情况下，Linux使用 U-Boot作为bootloader，那么uboot必然承担这初始化Linux运行需要的环境条件的责任。
   在设备启动的过程中，通常会使用gpio的组合或者不同的电阻来标明设备的不同版本或者不同的产品形态。那么如果设备文件中存在多个dtb文件的时候，则会根据硬件的不同版本选择对应...]]></description><category></category></item><item><title><![CDATA[Linux 下UVC&V4L2技术简介(四)--介绍下camera相关的硬件部分]]></title><link>https://blog.csdn.net/codectq/article/details/104770082</link><guid>https://blog.csdn.net/codectq/article/details/104770082</guid><author>codectq</author><pubDate>Tue, 10 Mar 2020 11:22:38 +0800</pubDate><description><![CDATA[花了很久的时间终于画了这张丑图，往往这种东西很有内涵，哈哈哈哈哈哈哈哈

首先贴一下参考文章链接：https://blog.csdn.net/Edmund_G/article/details/22986973?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158364999119725247644924%2522%252C%2522...]]></description><category></category></item><item><title><![CDATA[Linux 下UVC&V4L2技术简介(三)]]></title><link>https://blog.csdn.net/codectq/article/details/104662513</link><guid>https://blog.csdn.net/codectq/article/details/104662513</guid><author>codectq</author><pubDate>Wed, 04 Mar 2020 21:08:47 +0800</pubDate><description><![CDATA[先抛开V4L2的架构以及为用户提供的操作接口不提。我们在了解一个设备怎么塞入一个框架的时候，我们其实最关键的就是看到代码以及结构体的描述。下面我们就来看一下这个摘自内核的描述：
文件取自linux-xlnx-xilinx-v2017.4\include\media文件夹下，大部分我们用的结构体都在v4l2-device.h和v4l2-dev.h中有描述。
/**
 * struct video_d...]]></description><category></category></item><item><title><![CDATA[linux五大模块概述-----只描述了进程（linux内存管理，进程调度模块，进程间通信，文件系统模块，网络模块）]]></title><link>https://blog.csdn.net/codectq/article/details/104554813</link><guid>https://blog.csdn.net/codectq/article/details/104554813</guid><author>codectq</author><pubDate>Fri, 28 Feb 2020 13:26:30 +0800</pubDate><description><![CDATA[首先描述进程调度策略：


]]></description><category></category></item><item><title><![CDATA[谈论bringup我们到底在谈论什么？]]></title><link>https://blog.csdn.net/codectq/article/details/104484568</link><guid>https://blog.csdn.net/codectq/article/details/104484568</guid><author>codectq</author><pubDate>Mon, 24 Feb 2020 20:29:15 +0800</pubDate><description><![CDATA[首先用两张图来概述一下bringup导致需要做什么工作。
首先我们要知道各个阶段的开发任务和实施人员。

作为一个嵌入式软件开发人员在bringup的过程中我们需要掌握的知识。


...]]></description><category></category></item><item><title><![CDATA[ARM汇编寄存器简介]]></title><link>https://blog.csdn.net/codectq/article/details/104475204</link><guid>https://blog.csdn.net/codectq/article/details/104475204</guid><author>codectq</author><pubDate>Mon, 24 Feb 2020 12:08:40 +0800</pubDate><description><![CDATA[通常我们在看启动代码的时候会需要用到汇编，或者在出现问题反汇编可以查看问题的原因。这时候就需要对汇编指令和寄存器的用途有比较清楚的认识。下面就是对寄存器的简单描述：
ARM 32位寄存器
ARM汇编器对ARM的寄存器进行了预定义,所有的寄存器和协处理器名都是大小写敏感的.预定义的寄存器如下:
Ro-R15和r0-r15
a1-a4(参数,结果或者临时寄存器,与r0-r3同意)
v1-v8(变量寄存...]]></description><category></category></item><item><title><![CDATA[PCIe学习笔记（一）——硬件设备识别扫盲篇(史无前例的好文章)]]></title><link>https://blog.csdn.net/codectq/article/details/104472150</link><guid>https://blog.csdn.net/codectq/article/details/104472150</guid><author>codectq</author><pubDate>Mon, 24 Feb 2020 09:40:04 +0800</pubDate><description><![CDATA[首先用一张图来直观的呈现出要了解PCIe，我们需要知道的一些基本概念。
参考文章链接：
https://www.cnblogs.com/szhb-5251/p/11620310.html
https://www.cnblogs.com/yangxingsha/p/11551472.html
https://blog.csdn.net/kunkliu/article/details/9438035...]]></description><category></category></item><item><title><![CDATA[单片机入门---MISC]]></title><link>https://blog.csdn.net/codectq/article/details/103972563</link><guid>https://blog.csdn.net/codectq/article/details/103972563</guid><author>codectq</author><pubDate>Tue, 14 Jan 2020 14:26:46 +0800</pubDate><description><![CDATA[杂七杂八一大堆

]]></description><category></category></item><item><title><![CDATA[单片机入门---IAP]]></title><link>https://blog.csdn.net/codectq/article/details/103972517</link><guid>https://blog.csdn.net/codectq/article/details/103972517</guid><author>codectq</author><pubDate>Tue, 14 Jan 2020 14:25:05 +0800</pubDate><description><![CDATA[在线升级功能。

]]></description><category></category></item><item><title><![CDATA[单片机入门---EEPROM & programming flash]]></title><link>https://blog.csdn.net/codectq/article/details/103972493</link><guid>https://blog.csdn.net/codectq/article/details/103972493</guid><author>codectq</author><pubDate>Tue, 14 Jan 2020 14:23:59 +0800</pubDate><description><![CDATA[EEPROM:非易失性存储介质。

]]></description><category></category></item><item><title><![CDATA[单片机入门---I2C通信]]></title><link>https://blog.csdn.net/codectq/article/details/103972304</link><guid>https://blog.csdn.net/codectq/article/details/103972304</guid><author>codectq</author><pubDate>Tue, 14 Jan 2020 14:16:14 +0800</pubDate><description><![CDATA[STM32 可以同时支持Master以及Slave mode。

]]></description><category></category></item><item><title><![CDATA[单片机入门---ADC采样]]></title><link>https://blog.csdn.net/codectq/article/details/103968181</link><guid>https://blog.csdn.net/codectq/article/details/103968181</guid><author>codectq</author><pubDate>Tue, 14 Jan 2020 13:16:34 +0800</pubDate><description><![CDATA[ADC：analogy-digital converter  模拟-数字转换器。
首先可以参考这篇文章，对ADC采样有个正确的认识。https://blog.csdn.net/euxnijuoh/article/details/81066739
在ADC的初始化过程中，有两个很有意思的参数：
  hadc.Init.ContinuousConvMode = DISABLE;
  hadc.Init...]]></description><category></category></item><item><title><![CDATA[单片机入门---最重要的外设控制（GPIO）]]></title><link>https://blog.csdn.net/codectq/article/details/103957055</link><guid>https://blog.csdn.net/codectq/article/details/103957055</guid><author>codectq</author><pubDate>Mon, 13 Jan 2020 16:25:31 +0800</pubDate><description><![CDATA[本文中主要介绍STM32中的GPIO，在最后简单介绍下PIC的IO设置。
基本功能需求
我们在使用STM32的管脚时，主要使用串口，I2C,SPI，或者直接作为输入输出管脚。而这些管脚的实现都是通过GPIO完成的。
下面简单介绍下GPIO的四种输入模式和四种输出模式。

四种输出模式
首先我们回顾一下我们常用的输出形式，I2C,SPI,输出高低电平，通过外部上拉输出高电平。
推挽输出：该模式下引脚...]]></description><category></category></item></channel></rss>