自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(244)
  • 资源 (14)
  • 收藏
  • 关注

原创 uboot:源码分析-启动第一阶段-lowlevel_init

检查复位状态、IO恢复、关看门狗、开发板供电锁存、时钟初始化、DDR初始化、串口初始化并打印’O’、tzpc初始化、打印’K’。其中值得关注的:关看门狗、开发板供电锁存、时钟初始化、DDR初始化、打印"OK"

2024-09-21 19:15:00 623

原创 uboot:源码分析-启动第一阶段-start.S解析

进入start.S文件中,发现57行中就是_start标号的定义处。

2024-09-20 21:13:34 1018

原创 uboot:主Makefile分析

uboot的配置和编译过程的配合。编译的时候需要ARCH=arm、CPU=xx等这些变量来指导编译,配置的时候就是为编译阶段提供这些变量

2024-09-18 22:29:09 1278

原创 面试问题001

死锁是系统中两个或多个进程在执行过程中,因争夺资源而造成的一种僵局。当每个进程都持有一定的资源并等待其他进程释放它们所需的资源时,如果这些资源都被其他进程占有且不释放,就导致了死锁。互斥条件:一个进程占用了某个资源时,其他进程无法同时占用该资源。请求保持条件:一个线程因为请求资源而阻塞的时候,不会释放自己的资源。不可剥夺条件:资源不能被强制性地从一个进程中剥夺,只能由持有者自愿释放。循环等待条件:多个进程之间形成一个循环等待资源的链,每个进程都在等待下一个进程所占有的资源。

2024-09-14 21:45:00 991

原创 uboot:配置编译

在嵌入式系统中,BSP(Board Support Package)被称为板级支持包或板级支持软件。它是一组针对特定硬件平台的软件支持包,为开发人员提供了一个统一的接口层,简化了硬件和软件之间的交互。BSP的主要功能和特点如下:BSP的主要功能设备初始化和配置:BSP负责初始化硬件设备,并进行必要的配置,使操作系统能够正确地与硬件交互。驱动程序支持:BSP提供与硬件设备交互的驱动程序,使操作系统能够访问和控制硬件功能。

2024-09-07 21:00:00 749

原创 boot:常用命令

(1)行缓冲的意思就是:当我们向终端命令行输入命令的时候,这些命令没有立即被系统识别,而是被缓冲到一个缓存区(也就是系统认为我们还没有输入完),当我们按下回车键(换行)后系统就认为我们输入完了,然后将缓冲区中所有刚才输入的作为命令拿去分析处理。(2)linux终端设计有3种缓冲机制:无缓冲、行缓冲、全缓冲命令中的特殊符号(譬如单引号)

2024-09-06 23:30:00 1452

原创 uboot:常用环境变量

环境变量如何参与程序运行(1)环境变量有2份,一份在Flash中,另一份在DDR中。uboot开机时一次性从Flash中读取全部环境变量到DDR中作为环境变量的初始化值,然后使用过程中都是用DDR中这一份,用户可以用saveenv指令将DDR中的环境变量重新写入Flash中去更新Flash中环境变量。下次开机时又会从Flash中再读一次。(2)环境变量在uboot中是用字符串表示的,也就是说uboot是按照字符匹配的方式来区分各个环境变量的。因此用的时候一定要注意不要打错字了。

2024-09-05 23:30:00 663

原创 uboot:文件、目录分析

(1)api. 硬件无关的功能函数的API。uboot移植时基本不用管,这些函数是uboot本身使用的。(2)api_examples. API相关的测试事例代码。(3)board。board是板的意思,板就是开发板。board文件夹下每一个文件都代表一个开发板,这个文件夹下面放的文件就是用来描述这一个开发板的信息的。board目录下有多少个文件夹,就表示当前这个uboot已经被移植到多少个开发板上了(当前的uboot支持多少个开发板)。

2024-09-04 19:45:00 610

原创 uboot:uboot了解

uboot从哪里来的?(1)uboot是SourceForge上的开源项目(2)uboot项目的作者:一个德国人最早发起的项目(3)uboot就是由一个人发起,然后由整个网络上所有感兴趣的人共同维护发展而来的一个bootloader。uboot的发展历程(1)自己使用的小开源项目。(2)被更多人认可使用(3)被SoC厂商默认支持。总结:uboot经过多年发展,已经成为事实上的业内bootloader标准。现在大部分的嵌入式设备都会默认使用uboot来做为bootloader。

2024-09-03 22:30:00 1505

原创 驱动:linux驱动了解

理解驱动的概念(1)驱动一词的字面意思,车动起来了(2)物理上的驱动(3)硬件中的驱动,电脑适配器(4)linux内核驱动。软件层面的驱动广义上就是指:这一段代码操作了硬件去动,所以这一段代码就叫硬件的驱动程序。(本质上是电力提供了动力,而驱动程序提供了操作逻辑方法)狭义上驱动程序就是专指操作系统中用来操控硬件的逻辑方法部分代码。linux体系架构(1)分层思想(2)驱动的上面是系统调用API(3)驱动的下面是硬件(4)驱动自己本身也是分层的。

2024-09-02 22:00:00 371

原创 shell了解和问答机制

Shell 是一种命令行界面(CLI),它允许用户与操作系统(如 Linux 或 Unix)进行交互。Shell 充当了用户与操作系统内核之间的桥梁,接收用户输入的命令,并将其转换为内核能理解的形式执行。执行完毕后,Shell 会将结果返回给用户。简单来说,Shell 是用户与操作系统之间的接口。Shell 的功能非常强大,它不仅可以执行系统命令,还可以编写复杂的脚本,以自动化执行一系列的任务。

2024-09-01 22:15:00 1495

原创 裸机:LCD

LCD,全称为Liquid Crystal Display,即液晶显示屏,是一种利用液晶物质的光学特性,通过控制电场来改变光的透过性,从而实现图像显示的技术。以下是关于LCD的详细解释:1.功耗低:由于LCD采用液晶分子作为显示元件,其功耗远低于传统的CRT显示器。2.体积小、重量轻:LCD具有平面超薄的特点,可以大大节省空间,便于携带和安装。3.辐射低:LCD在工作时不会产生电磁辐射,对人体健康无害。4.色彩丰富、显示效果好:随着技术的进步,LCD的色彩表现和显示效果已经达到了非常高的水平,可以满足

2024-08-31 23:30:00 674

原创 裸机:触摸屏TouchScreen

理解原理,主要还是关注接口方式,具体使用时参考代码!

2024-08-30 22:15:00 770

原创 Git和SVN了解

Git是一种开源的分布式版本控制系统,它用于敏捷高效地处理任何或小或大的项目。Git由林纳斯·托瓦兹(Linux之父)设计并开发,自问世以来,因其强大的功能和灵活性,在软件开发和版本控制领域得到了广泛应用。以下是对Git的详细介绍:一、Git的基本概念和特点版本控制:Git是一个版本控制系统,用于记录文件的更改历史,以便能够追踪、恢复或比较不同版本的文件。分布式:与集中式版本控制系统(如SVN)不同,Git是分布式的,意味着每个用户都可以在自己的计算机上拥有一个完整的仓库副本,包括所有的历史记录。

2024-08-29 21:24:34 970

原创 裸机:SD卡启动详解

硬盘:硬盘是计算机中最常用的外存设备之一,分为机械硬盘(HDD)和固态硬盘(SSD)两种。机械硬盘(HDD):由涂有磁性材料的铝合金原盘组成,通过磁头在盘片上读写数据。其优点是容量大、价格相对较低,但读写速度相对较慢,且抗震性较差。固态硬盘(SSD):以闪存为存储介质,通过电学原理存储数据。相比机械硬盘,固态硬盘具有读写速度快、延迟低、抗震性好等优势,但价格相对较高。随着技术的发展,固态硬盘的出货量在全球硬盘市场上占比不断提高。软盘:虽然现已较少使用,但软盘曾是重要的外存设备。

2024-08-29 21:15:00 980

原创 裸机:NandFlash和iNand

iNand 是 SanDisk 公司研发的存储芯片,可以看作是 SD 卡或 MMC 卡芯片化的产物。iNand 内部采用 MLC(多层单元)存储颗粒,并提供了复杂的接口电路和完善的功能,如 ECC 校验、Cache 机制等。主要特点:1.接口协议:iNand 提供了 eMMC 接口协议,与 SoC(系统级芯片)的 eMMC 控制器进行配对通信,简化了与 SoC 的连接和交互。2.性能提升:iNand 内置了 Cache 模块,能够显著提高小容量文件的存储速度,并且具有接近 SLC 的读写速度。

2024-08-28 23:00:00 1156

原创 裸机:定时器、看门狗和RTC

(1)PWM(pulse wide modulation 脉宽调制)(2)PWM波形是一个周期性波形,周期为T,在每个周期内波形是完全相同的。每个周期内由一个高电平和一个低电平组成。(3)PWM波形有2个重要参数:一个是周期T,另一个是占空比duty(占空比就是一个周期内高电平的时间除以周期时间的商)。(4)对于一个PWM波形,知道了周期T和占空比duty,就可以算出这个波形的所有细节。譬如高电平时间为Tduty,低电平时间为T(1-duty)。

2024-08-26 23:30:00 1104

原创 裸机:按键和CPU的中断系统

(1)SoC处理按键有2种思路:轮询方式和中断方式。(2)轮询方式,就是SoC主动的每隔一段时间去读取(按键所对应的)GPIO的电平高低,以此获得按键信息;缺点在于CPU要一直注意按键事件,会影响CPU做其他事情。(3)中断方式,就是SoC事先设定好GPIO触发的中断所对应的中断处理程序ISR,当外部按键按下或弹开时会自动触发GPIO对应的外部中断,导致ISR执行,从而自动处理按键信息。找到按键对应的GPIO:SW5:GPH0_2 SW6:GPH0_3 SW78910:GPH2_0123原理图上可以

2024-08-26 22:15:00 642

原创 裸机:串口通信

单工通信和双工通信(1)单工就是单方向,双工就是双方同时收发,同时只能但方向但是方向可以改变叫半双工(2)如果只能A发B收则单工,A发B收或者B发A收(两个方向不能同时)叫半双工,A发B收同时B发A收叫全双工。三根通信线:Rx Tx GND(1)任何通信都要有信息传输载体,或者是有线的或者是无线的。(2)串口通信是有线通信,是通过串口线来通信的。(3)串口通信线最少需要2根(GND和信号线),可以实现单工通信,也可以使用3根通信线(Tx、Rx、GND)来实现全双工。

2024-08-25 22:15:00 931

原创 QT:json解析

定义:Postman是一个API开发辅助工具,它简化了与API的交互以及API的构建工作。通过发送请求到API并接收响应,开发人员可以测试API的功能并对其进行调试。用途:Postman主要用于API接口的开发与测试,帮助开发人员快速构建请求、发送请求、查看响应,并进行必要的断言和自动化测试。)";return;return;delete ui;

2024-08-24 23:15:00 845

原创 QT:多线程与并发

QtConcurrent是Qt框架中用于简化多线程编程的一个模块,它提供了一系列高级API,使得开发者能够更容易地编写多线程代码,从而充分利用多核处理器的性能优势。简化多线程编程:QtConcurrent隐藏了线程的创建、调度和销毁等底层复杂性,使得开发者能够专注于实现并行算法和任务,而无需担心线程管理的细节。高层次的API:QtConcurrent通过QFuture和QThreadPool等类提供了一组高级API,允许开发者以声明性的方式表达并行任务,从而更容易地实现并行计算。

2024-08-24 21:00:00 573

原创 QT:Qt与ECharts

ECharts是一款基于JavaScript的数据可视化图表库,由百度团队最初开发,并在2018年初捐赠给Apache基金会,成为ASF孵化级项目。随着项目的不断发展,ECharts在2021年1月26日正式毕业,成为Apache顶级项目。

2024-08-23 23:30:00 166

原创 QT:使用QCefView

1、拷贝文件2、添加头文件路径、库路径、库名称3、解决问题。

2024-08-22 20:15:00 183

原创 QT :VS2019 CMake QCefView编译

QCefView是为Qt开发的一个封装集成了CEF(Chromium Embedded Framework)库的Widget UI组件。它允许开发者在Qt项目中轻松嵌入网页,并利用CEF的丰富Web能力来快速开发混合架构的应用程序。Web能力集成:QCefView集成了CEF库,使得Qt应用程序能够利用Chromium的强大Web渲染引擎。混合架构开发:支持C++与JavaScript之间的互操作,使得开发者可以在Qt项目中同时使用Web技术和桌面应用开发技术。

2024-08-21 23:30:00 675

原创 QT:QWebEngineView基本使用

出现问题解决提升类本地页面。

2024-08-20 23:30:00 211

原创 QT:VS2019 CMake编译CEF

其多平台支持、HTML5特性、自定义能力以及多进程架构等特性,使得CEF在浏览器开发、桌面应用、开发工具以及自动化测试等领域得到了广泛应用。自定义能力:CEF支持自定义插件、自定义协议、自定义JavaScript对象和扩展,以及可控制的资源加载、导航、上下文菜单等。HTML5支持:由于基于Chromium,CEF支持HTML5的各种特性,包括WebGL、CSS3等。多平台支持:CEF支持Windows、Linux、Mac平台,提供了丰富的跨平台支持。在该目录新建两个目录。同样的问题 继续修改。

2024-08-19 20:45:00 294

原创 QT:安装软件

QT是一个跨平台的C++应用程序开发框架,具有广泛的应用领域和强大的功能。定义:QT是一个跨平台的C++图形用户界面应用程序框架,为开发者提供了建立艺术级图形界面所需的所有功能。特点:QT具有短平快的优秀特质,即投资少、周期短、见效快、效益高。它支持几乎所有的平台,包括桌面操作系统(如Windows、Linux、MacOS)和移动操作系统(如Android、iOS),以及嵌入式系统。

2024-08-18 22:45:00 210

原创 C++:哈希函数和桶

有一个简单的Point类,它有两个int类型的成员变量x和y。Point类定义了一个内部的Hash结构体,它重载了()操作符以提供哈希函数。在std命名空间中特化了std::hash模板,以便unordered_map等容器能够使用它。#include // 包含std::hash// 自定义的Point类public:int x, y;// 为了让Point可以用于unordered_map等容器中,我们需要提供哈希函数。

2024-08-17 21:30:00 857

原创 C++:unordered_set和unordered_map

unordered_set 是 C++ 标准库中的一个无序关联容器,它存储的元素是唯一的,并且元素的插入、删除和查找操作平均时间复杂度为常数时间 O(1)(尽管在最坏情况下可能退化到 O(n),但这在实际情况中很少发生)。unordered_set 内部通常实现为一个哈希表,这意味着它不会根据元素的任何特定顺序来存储元素。

2024-08-16 23:30:00 627

原创 C++:multiset和multimap

multiset 是一个关联容器,它存储的元素也是唯一键的集合,但与set 不同的是,multiset 允许存储多个具有相同键的元素。multiset 内部通常实现为一个红黑树,这意味着元素总是按键的顺序存储,同时保持了元素插入的顺序(如果键相同,则按插入顺序)。

2024-08-15 23:15:00 389

原创 C++:有序关联容器map

map 是一种关联容器,它存储的元素是键值对(key-value pairs),其中每个键都映射到其关联的值上。map 内部通常实现为一个红黑树,这意味着元素总是按键的顺序存储,这使得元素的查找、插入和删除操作都能在对数时间内完成。

2024-08-14 23:30:00 446

原创 C++:有序关联容器set

(1)顺序容器,容器中的元素是按它们在容器中的位置来顺序保存和访问的(可以理解是数组)(2)顺序容器有array、vector、deque、list、forward_list、string等(3)关联容器中的元素是按关键字来保存和访问的,关联的意思就是关键字(key)与存储值(value)的关联(4)主要的关联容器类型是map和set(5)关联容器支持高效的关键字查找和访问(6)有序关联容器:容器内元素按顺序排列,一般用树(譬如红黑树)来实现。

2024-08-13 23:30:00 499

原创 C++:queue和priority_queue

优先队列(priority_queue)是一种特殊的队列,其中每个元素都被赋予了一个优先级。元素的出队顺序是根据它们的优先级来决定的,而不是它们被插入到队列中的顺序。在默认情况下,最高优先级的元素会被首先移除(即,对于最大堆实现的优先队列,最大的元素会被首先移除)。

2024-08-12 22:45:00 271

原创 C++:智能指针了解

C++ 中的智能指针是一种用于自动管理动态分配的内存的类模板。它们可以帮助程序员避免内存泄漏和悬挂指针等问题。C++11 引入了三种主要的智能指针:std::shared_ptr 和每种智能指针都有其特定的用途和优势。

2024-08-11 22:20:31 293

原创 C++:容器适配器stack详解

在两个栈之间交换元素,最直接的方法是使用swap函数(如果语言支持)或者手动将元素从一个栈转移到另一个栈中,然后反向操作以完成交换。

2024-08-11 22:17:46 456

原创 C++:容器了解

顺序容器是STL中的一种容器类型,用于存储一系列的元素,这些元素保持一定的顺序。

2024-08-07 21:00:00 409

原创 C++:模板特化

模版特化就是针对指定类型,重新编写一个函数,实现不同的功能全特化:所以类型都特化偏特化:部分类型特化、不同限定条件。

2024-08-06 21:45:00 352

原创 C++:std::multiplies<int>|std::for_each|std::transform

std::multiplies 是一个模板类 std::multiplies 的特化,用于整数类型的乘法。它是一个函数对象,重载了函数调用运算符,使其能够像函数一样使用。std::partial_sum 可以接受一个二元运算符作为参数,用于定义如何计算部分和。使用 std::multiplies 可以计算部分乘积。总结。

2024-08-05 20:30:00 627

原创 C++:std::find|std::find_if|std::find_if_not

std::find: 查找与指定值相等的第一个元素。std::find_if: 查找第一个满足指定条件的元素。std::find_if_not: 查找第一个不满足指定条件的元素。

2024-08-03 22:15:00 354

原创 C++:std::all_of|std::any_of|std::none_of

std::all_of 检查范围内的所有元素是否都满足某个条件。若所有元素都满足条件,则返回 true,否则返回 false。

2024-08-02 21:45:00 328

python 实现 飞船大战

python 实现 飞船大战

2024-03-29

Cmake test 练习案例

Cmake test 练习案例

2023-05-24

SQL数据库语言学习记录

SQL数据库语言学习记录

2022-03-09

软件测试流程知识学习记录

软件测试流程知识学习记录

2022-03-09

HTML相关知识简单总结记录

HTML相关知识简单总结记录

2022-03-09

SQL003分组查询练习.sql

SQL003分组查询练习

2022-01-06

SQL条件查询语句练习.txt

SQL002条件查询练习

2022-01-06

SQL简单查询语句练习.txt

SQL简单查询练习

2022-01-04

JavaScript基础语法.zip

JavaScript基础语法

2021-12-11

JavaScript简介.zip

JavaScript简介,与博客内容一致,具体项目

2021-12-11

实验九外部IO扩展实验.zip

51单片机实验九:外部IO扩展实验

2021-07-21

实验八双机通信.zip

51单片机实验八:双机通信

2021-07-21

51单片机实验一 74LS138.zip

51单片机:74LS138译码实验

2021-07-21

STM32.pdsprj

基于STM32的ADC仿真+OLED显示源程序+Proteus仿真

2021-06-09

wrieshark.zip

Wireshark 是网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包, 并尝试显示包的尽可能详细的情况。 你可以把网络包分析工具当成是一种用来测量有什么东西从网线上进出的测量工具,就好像使电工用来测量进入电信的电 量的电度表一样。(当然比那个更高级) 过去的此类工具要么是过于昂贵,要么是属于某人私有,或者是二者兼顾。 Wireshark 出现以后,这种现状得以改变。 Wireshark 可能算得上是今天能使用的最好的开元网络分析软件

2021-03-12

IAR for 430

IAR for MSP430全称IAR Embedded Workbench for MSP430是一款功能强大的专业集成开发环境,是针对单片机开发用户打造的专业开发工具,软件包括项目管理、配置开发环境、创建编译器、定制具体编程方案等多个实用功能。

2020-10-06

空空如也

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

TA关注的人

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