自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(163)
  • 资源 (12)
  • 收藏
  • 关注

原创 HTML audio设置.currentTime而实际播放位置不准确

编码即可,或其他文件格式。

2023-12-19 01:20:27 148 1

原创 获取其他进程输入法中英文状态 Python

【代码】获取其他进程输入法中英文状态 Python。

2023-05-09 19:38:51 533 2

原创 LIEF:修改安卓.so后报 dlopen failed:has invalid shdr offset/size

java.lang.UnsatisfiedLinkError: dlopen failed: "lib.so" has invalid shdr offset/size: 381358/1600

2022-06-25 23:23:23 1721

原创 cmake后Makefile:32: *** missing separator. Stop.

问题windows下使用 cmake .. 后 make (mingw32-make)报错:Makefile:32: *** missing separator. Stop.32行内容:!IF "$(OS)" == "Windows_NT"NULL=!ELSENULL=nul!ENDIFSHELL = cmd.exe解决使用 cmake .. -G "MinGW Makefiles" 生成支持mingw的Makefile文件cmake -help 可以查看 Generator

2022-02-14 21:40:22 1323

原创 ffmpeg源码编译安装 没有生成ffmplay

ubuntu 16.04及以上版本需安装sdl2,低版本安装sdl1.2sudo apt-get install libsdl2-dev配置./configure --prefix=/usr/local/ffmpeg --enable-debug=3 --enable-shared --disable-static输出信息有 ffmplayPrograms:ffmpeg ffplay ffprobe编译,安装,添..

2021-02-27 19:38:33 549

原创 树莓派:No module named ‘PyQt5.QtMultimedia‘

解决:How can I add a missing PyQt5 modules on Raspberry PiIf you installed the Raspbian pyqt5-dev and pyqt5-dev-tools packages, this will only provide the core PyQt5 modules like QtCore, QtGui, QtWidg...

2020-08-14 09:27:08 3670

原创 RT-Thread 应用篇

问题:串口乱码,或者延时时间不准确解决:查看外部晶振配置是否正确,文件stm32f4xx.h中HSE_VALUE要与实际的晶振大小相同。#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */同时,system_stm32f4xx.c文件中PLL_M页要修改为对应值。...

2019-04-16 20:37:35 506

原创 Linux驱动开发(一):字符设备

**目的:**实现最简单的点灯操作。Linux一切皆文件,应用程序访问某个物理设备(文件)时,首先通过open, read, write等库函数调用系统调用接口(System call interface),系统调用通过传进来的系统调用号操作虚拟文件系统(Virtual File System),VFS再根据目标文件类型去找相应的驱动程序。应用程序和VFS之间的接口是系统调用,而VFS与文件系...

2019-04-09 22:06:58 285

原创 RT-Thread移植到S5P4418(五):线程通信

RT-Thread实现了三种线程间通信方式,邮箱(mailbox)、消息队列(messagequeue)、和信号(signal)。邮箱邮箱中的每一封邮件只能容纳固定的 4 字节内容。任何线程都可以发送或接受邮件消息。邮箱控制块struct rt_mailbox{ struct rt_ipc_object parent; rt_uint32_t* msg_pool; ...

2019-03-10 23:21:50 782

原创 RT-Thread移植到S5P4418(四):线程同步

同步是指按预定的先后次序进行运行,线程同步是指多个线程通过特定的机制(如互斥量,事件对象,临界区)来控制线程之间的执行顺序,也可以说是在线程之间通过同步建立起执行顺序的关系,如果没有同步,那线程之间将是无序的。线程的同步方式有很多种,其核心思想都是:在访问临界区的时候只允许一个 (或一类) 线程运行。RT-Thread实现了三种线程间同步方式,信号量(semaphore)、互斥量(mutex)...

2019-02-26 14:36:22 312

原创 RT-Thread移植到S5P4418(三):静态内存池管理

内存堆管理器可以分配任意大小的内存块,非常灵活和方便。但其也存在明显的缺点:一是分配效率不高,在每次分配时,都要空闲内存块查找;二是容易产生内存碎片。为了提高内存分配的效率,并且避免内存碎片,RT-Thread 提供了另外一种内存管理方法:内存池(Memory Pool)。内存池是一种内存分配方式,用于分配大量大小相同的小内存块,它可以极大地加快内存分配与释放的速度,且能尽量避免内存碎片化。此外...

2019-02-21 16:49:55 674

原创 RT-Thread移植到S5P4418(二):动态内存管理

内存管理在RT-Thread中分为动态内存管理和静态内存管理。静态的又称为内存池管理,动态的称为内存堆管理。内存堆:官方提供了三种管理方式。小内存管理。申请时在一块大的、连续的内存中按需求分割出相匹配的小内存块;释放时,归还给堆管理系统。每个内存块都包含一个管理用的数据头,通过双向链表来管理使用块和空闲块。slab 管理算法。TODO!memheap 管理算法。适用于系统含有多个地址...

2019-02-17 19:19:21 857

原创 RT-Thread移植到S5P4418(一):调度器

S5P4418,Cortex-A9系列。结合了 RT-Thread内核实现(六):时间片 和 S5P4418裸机开发(十四):TIMER 的代码。SysTick &amp;amp;amp;amp;amp; PendSVRT-Thread实现线程调度两个比较核心的中断。SysTick更新系统时基。PendSV做上下文切换。SysTick在S5P4418中用timer0代替。周期10ms,注意中断服务函数要清除中断标志位...

2019-01-28 20:25:27 770

原创 imxq Freescale Yocto Project编译记录

参考: IMX6Q环境搭建、安装Yocto包和编译编译内核配置menuconfig指令:bitbake -c menuconfig -v linux-imx单独编译kernel、模块、设备树bitbake -c compile -f -v linux-imxbitbake linux-imx -c compile_kernelmodules -f -vbitbake -c dep...

2019-01-21 09:40:09 886

原创 opencv3 C/C++不同接口

类型CC++头文件#include &lt;opencv/cv.h&gt;#include &lt;opencv/highgui.h&gt;…#include &lt;opencv2/opencv.hpp&gt;#include &lt;opencv2/highgui/highgui.hpp&gt;…主要数据类型IplImage *imgMat img显示...

2018-12-12 17:02:49 709

原创 RT-Thread内核实现(六):时间片

整体思想假如A、B两个线程优先级相同,A先启动,只要A不主动让出CPU,线程B就没机会执行。时间片就是为了解决相同优先级下多线程的并发问题。线程控制块添加rt_ubase_t init_tick属性,remaining_tick记录剩余的时间片。struct rt_thread{ /* rt 对象 */ char name[RT_NAME_MAX]...

2018-12-09 20:51:44 1307

原创 RT-Thread内核实现(五):定时器

定时器结构体成员row[RT_TIMER_SKIP_LIST_LEVEL] 表示该节点在跳跃表中的纵向分布,根据跳转表的特性,第一级链表必须包含所有节点,所以row[RT_TIMER_SKIP_LIST_LEVEL - 1]必须挂在rt_timer_list[RT_TIMER_SKIP_LIST_LEVEL - 1]上。

2018-12-09 13:56:50 999

原创 RT-Thread内核实现(四):多优先级

整体思想:前几章并不支持多优先级,都是手动切换指定的线程来运行。支持优先级后,调度器只会找当前最高优先级的线程来运行。RT-Thread属于抢占式实时操作系统,CPU会被当前最高优先级线程抢占,除非最高优先级线程主动放弃,比如调用rt_thread_delay(rt_tick_t tick)延时函数,会将线程状态改为挂起状态或者说阻塞状态,然后执行系统调度。线程控制块添加了几属性...

2018-12-02 00:21:26 586

原创 VSCode 返回上一个光标 (上一个浏览位置)

Ctrl + 鼠标左击跳到定义.返回Windows: Alt + ← ;或者 鼠标侧键Linux: Ctrl + Alt + - ;貌似数字键盘的减号没效果Mac: Ctrl + -

2018-11-28 11:47:12 121497 16

原创 涨姿势系列:花里胡哨调试信息

#include &amp;amp;lt;stdio.h&amp;amp;gt;#define logD(fmt, ...) \ fprintf(stdout, &amp;quot;[\e[34m debug \e[0m] %s:%02d --&amp;amp;gt; &amp;quot;, __FILE__, __LINE__); fprintf(stdout, fmt, ##__VA_ARGS__);#define logE(f

2018-11-28 10:11:05 315

原创 RT-Thread内核实现(三):空闲线程与阻塞延时的实现

空闲函数 idle如果没有其它线程可以运行, RTOS 都会为 CPU 创建一个空闲线程,这个时候 CPU 就运行空闲线程。 在 RTThread 中,空闲线程是系统在初始化的时候创建的优先级最低的线程,空闲线程主体主要是做一些系统内存的清理工作。相关定义。idle.c#define IDLE_THREAD_STACK_SIZE 512 // 空闲线程的栈大小ALIGN(...

2018-11-27 21:20:01 2044

原创 RT-Thread内核实现(二):临界区,对象容器

临界区(Critical Section)保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。RT-Thread 对临界段的保护就处理的很干脆,直接把中断全部关了, NMI FAULT 和硬 FAULT 除外。Cortex M3权威指南 中对异常掩蔽寄存器的说明。当临界段嵌套时,如果简单的开关总中断,内部临界段释放时总中断被打开,而外部临界段并...

2018-11-24 21:59:45 435

原创 RT-Thread内核实现(一):线程与调度

线程是一个独立的、无限循环且不能返回的函数。系统为了顺利的调度线程,为每个线程都额外定义了一个线程控制块,这个线程控制块就相当于线程的身份证,里面存有线程的所有信息,比如线程的栈指针,线程名称, 线程的形参等。rtdef.h中定义了线程控制块结构体/*****************************************************************...

2018-11-19 14:08:33 803

原创 S5P4418裸机开发(十六):ache & MMU

指令cache

2018-11-09 23:37:23 577

原创 Ubuntu 16.04下,vsftpd匿名用户修改默认目录后不能上传、下载等

只针对匿名用户,本地用户未测试。修改sudo vim /etc/vsftpd.confanonymous_enable=YESlocal_enable=YESwrite_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YES上面最基本的几条要保证;修改默认目录anon_root=/home/ftp修改默...

2018-11-07 17:21:34 785

原创 S5P4418裸机开发(十五):SDIO

参考SD4.0协议标准完整版[1-6章中文翻译]sd 协议解析S5P4418,3个SD/MMC控制接口。SDIO协议3.0。寄存器寄存器名功能留坑···

2018-10-18 18:23:05 502 1

原创 S5P4418裸机开发(十四):TIMER

概述S5P4418,5个定时器Timers 0, 1, 2, and 3有连接GPIO,可以输出PWM时钟源PCLK,2nboot默认配置为200MHzTimers 0 and 1共享一个预分频器,Timers 2, 3, and 4共享另外一个…相关寄存器寄存器功能TCFG0死区,预分频TCFG1DMA,分频TCON自动重装载,手动更新,...

2018-10-05 13:26:33 644

原创 VSCode调试C++/Python,简单配置

launch.json{ &amp;quot;version&amp;quot;: &amp;quot;0.2.0&amp;quot;, &amp;quot;configurations&amp;quot;: [ { &amp;quot;name&amp;quot;: &amp;quot;C++ Launch (GDB)&amp;quot;, // 配置名称,将

2018-10-04 11:23:54 847

原创 S5P4418裸机开发(十三):GIC

GIC系列文章:arm GIC介绍之一arm GIC介绍之二GIC由Distributor和CPU interface组成;Group0,Secure accesses,FIQ驱动Group1,Non-secure accesses,IRQ驱动VIC和GIC:VIC可以用传统单片机中断的思维去理解,GIC应该从Linux系统的角度去考虑。VIC中外设的中断号n 对应到GIC中是 ...

2018-10-02 23:04:48 873

原创 S5P4418裸机开发(十二):IRQ (按键中断) & 串口中断

S5P4418 64个中断源,按键的GPIO口是GPIOB28-30,中断号为54;Interrupt Controller相关寄存器寄存器功能VICIRQSTATUSR,相关位为1表示该IRQ中断发生且未被屏蔽VICFIQSTATUSR,相关位为1表示该FIQ中断发生且未被屏蔽VICRAWINTRR,表示屏蔽之前的中断状态VICINTSELECT...

2018-09-29 18:31:32 1575

原创 S5P4418裸机开发(十一):FPU使能 & SWI异常

FPU使能心血来潮想优化一下UART初始化部分,之前是固定的115200,改成根据传入的参数值来设定波特率;// 设置UART0时钟,一般设置为10MHz UARTCLKENB |= (1 &amp;lt;&amp;lt; 2); UARTCLKGEN0L &amp;amp;= ~((3 &amp;lt;&amp;lt; 2) | (0xFF &amp;lt;&amp;lt; 5)); p = (PLLSETREG0 &am

2018-09-23 13:43:03 538

原创 S5P4418裸机开发(十):Undef异常处理

上一帖总结了异常中断处理过程,当未定义指令异常发生时,PC最终会跳到0xFFFF0204,该地址上也是一条跳转指令。为了执行我们自定义的异常处理函数,让这条指令跳向我们的函数即可;接着 5_lds 写;在启动文件中加入一条未定义指令;.text.global _start_start: // 地址 0x42C00000 bl bss_init ...

2018-09-21 22:30:09 593

原创 S5P4418裸机开发(九):异常中断处理概述

ARM体系结构中对异常中断的一些概述七种异常CPU对异常的响应过程从异常中断中返回SWI或Undef:发生该异常时,PC值未更新,它指向当前指令后面的第2条指令,进入中断时,CPU将(PC-4)保存到lr_mode中,(PC-4)指向的是当前指令的下一条指令;异常处理完后应返回当前指令的下一条指令;即MOV PC, LRIRQ或FIQ:通常,CPU执行完...

2018-09-20 22:49:30 887

原创 S5P4418裸机开发(八):lds链接脚本的使用

前几个程序编译链接时, 会使用ld -Ttext=0x42C00000指定.text段的起始地址; 以串口回显的工程为例,查看编译后的文件大小; 再看看.elf文件的段表,arm-linux-objdump -h LMA: load address,加载地址; VMA: virtual address,在RAM中的运行地址; Loader,装载器的作用: 1。...

2018-09-17 00:05:34 916

原创 S5P4418裸机开发(七):SDRAM

Smart4418 板载 1GB DDR3 SDRAM; 芯片型号 K4B4G1646D-BCK0; 16bit位宽,单片容量256Mbit * 16 = 4Gbit,即 512Mbyte; 板载两块,U6,U7;SDRAM基本原理: ARM 内存SDRAM 讲解 DDR SDRAM基本原理详细介绍 SDRAM-高手进阶,终极内存技术指南-完整进阶版SDRAM的全称是...

2018-09-15 22:38:44 538

原创 S5P4418裸机开发(零):小问题记录

一、裸机没有除法和取模运算针对ARM裸机环境,当除数是变量是时,报错信息:undefined reference to `__aeabi_uidivmod'undefined reference to `__aeabi_uidiv'参考:交叉编译之__aeabi_uidiv问题 ARM芯片没有实现除法的硬件结构,因此是采用软件去实现除法。编译器支持软浮点,软浮点的实现是在li...

2018-09-10 23:55:50 502

原创 S5P4418裸机开发(六):串口初试,简单回显(轮询模式)

手册上对S5P4418串口的概述UART0 ~ 4,五个串口可编程FIOFUART0,1,2支持DMAIrDA(红外数据组织)SIR ENDEC…UART配置基本流程TX引脚配置为输出模式,RX引脚配置为输入模式配置UART时钟配置波特率,数据位,停止位,校验位等使能以UART0为例,GPIO配置...

2018-09-05 16:49:06 1875 5

原创 S5P4418裸机开发(五):时钟

还没理解透,留坑

2018-09-04 21:59:08 1418

原创 c语言局部变量的内存地址分配顺序

测试程序:#include &amp;lt;stdio.h&amp;gt;int main(){ unsigned int ui = 10; char c = 11; unsigned char uc = 12; int i = 13; double d = 14; short s = 15; printf(&quot;ok\n&quot;); print...

2018-08-31 16:04:46 1954

原创 Makefile使用细节

变量及通配符A := $(C) # 即时变量,此时C未定义,A为空B = $(C) # 延时变量,用到B时再确定具体的值C = abcC ?= 123 # C不是第一次定义,被忽略C += 789D ?= xyz # D是第一次定义all: @echo A = $(A) @echo B = $(B) @echo C = $(C) ...

2018-08-31 12:51:11 385

STM32F429_3.1.3_FinSH控制台.zip

基于STM32F429移植RT-Thread-3.1.3添加FinSH控制台例程。

2020-06-16

STM32F429_FinSH控制台.zip

基于STM32F429移植RT-Thread-3.1.1添加FinSH控制台例程。                   

2020-06-09

arm-gcc交叉编译器,生成64位程序

arm交叉编译器,生成64位程序。         

2020-05-11

rzsz-3.48源码,以及64位编译生成的bin

rzsz-3.48源码,以及arm64平台下的可执行文件,直接拷贝到系统bin目录下,即可使用minicom传输文件

2020-04-29

超级终端(串口文件传输)

可用于向开发板传输文件,比如裸机程序,支持Kermit、Xmodem、Ymodem、Zmodem等协议。

2019-04-03

arm-linux-gcc 4.9.3

ARM Linux C 交叉编译工具链,4.9.3版本,适用于Coterx-A系列。                                  

2019-04-03

i.MX 6 BSP Porting Guide

Chapter 1 - Porting U-Boot from an i.MX 6 Reference Board to an i.MX 6 Custom Board Chapter 2 - Configuring the IOMUX Controller Chapter 3 - Registering a New UART Driver Chapter 4 - Adding Support for SDHC Chapter 5 - Configuring the SPI NOR Flash Memory Technology Device (MTD) Driver .....

2019-01-21

Freescale Yocto Project User's Guide

This document describes how to build an image for an i.MX Freescale board by using a Yocto Project build environment. It describes the Freescale release layer and Freescale-specific usage.

2019-01-21

Cortex M3权威指南(中文).pdf

Cortex‐M3 是一个 32 位处理器内核。 内部的数据路径是 32 位的, 寄存器是 32 位的, 存储器接 口也是 32 位的。 CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问 并行不悖。 这样一来数据访问不再占用指令总线,从而提升了性能。

2018-11-18

ARM® Architecture Reference Manual, ARMv7-A and ARMv7-R edition

ARM®架构参考手册,ARMV7A和ARMV7-R版,ARM® Architecture Reference Manual, ARMv7-A and ARMv7-R edition。 各部分有比较详细的说明。

2018-11-09

Cortex-A9 Technical Reference Manual

Cortex-A9 Technical Reference Manual r4p1 CORTEX-A9技术参考手册

2018-11-05

S5P4418芯片手册

S5P4418 数据手册,可复制,可修改; S5P4418。四核cortex-a9系列。                        

2018-11-05

空空如也

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

TA关注的人

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