自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (2)
  • 收藏
  • 关注

原创 Hamming weight快速计算32bit的中1的个数

【代码】Hamming weight快速计算32bit的中1的个数。

2024-01-05 16:11:52 393

原创 linux kernel社区补丁提交流程

linux kernel社区补丁提交

2023-05-11 14:08:53 467

原创 基于yolov7的家庭无人值守监控报警系统

需要在linux发行版上使用nvdia gpu加速,目前准备先跑起来整个流程后再搭建加速环境。暂时采用CPU环境跑通流程。python实现的框架。

2023-04-07 17:10:34 418

原创 gcc优化内存之 __attribute__((packed))

((packed)) 是gcc的优化选项,选择紧凑内存模式,结构体会不采用对齐的方式来使用内存,所以。加此编译选项时会只使用3字节内存,而不加此编译选项的话,会使用4字节内存。

2022-11-22 15:55:26 538

原创 6.10版本内核体验

第一张图为6.10版本内核的性能,对比发现,context1的性能上,6.10比5.15要高8%,上下文切换作为很重要的一个性能指标,差距这么大,看来6.10的优化做的很好。后续会继续更新其他测试项做整体的对比。通过Run -c 12 context1 来测试上下文切换的性能,结果如下。一般情况下编译成功后的内核默认是会被启动,如果想切换内核可以通过修改。x86PC 12核,virtualbox + deepin系统。这个没什么可说的,安装各种编译工具后进行编译和安装内核。

2022-11-02 16:04:25 556

原创 riscv汇编实现一些函数

【代码】riscv汇编实现一些函数。

2022-10-17 09:47:45 1192

原创 scp Permission denied

使用-P指向端口时,要放在前面,放在文件后会报错。

2022-07-18 13:48:05 156

原创 python生成一段日期的学生随机体温表

python 生成随机体温数据

2022-06-27 14:32:07 1035

原创 python查看删除你的好友

python2.7 环境运行

2022-06-21 16:44:09 169

原创 python双色球数据抓取及模拟生成高概率的号码

双色球分析

2022-06-17 13:50:55 1950

原创 cgroup调度

一、前言调度组的本质是将进程组作为一个调度的实体,这样做的目的是对类似桌面系统这样的环境,cfs公平分配的情况下,将进程放在组中的,防止单一的进程抢占更多的资源,导致桌面的进程分配更低的资源,例如10个单一进程,每个进程分配约1/10的cpu资源,如果将9个进程放到组中,那么这个组会和另外一个进程平分资源。cgroup也是基于此来进行的资源隔离控制。二、数据结构1、调度组的数据结构定义在sched.h中,每个组创建后都会放到task_groups这个全局变量为头的链表中(sched_init中是这样操

2021-12-13 13:40:59 419

原创 ftrace调试

##设置为function_graph追踪模式echo function_graph > current_tracer ##启动追踪echo 1 > tracing_on##清除trace文件缓存cat /dev/null > trace##调用函数查看调研栈tail -n 100 trace

2021-12-01 11:31:33 99

原创 inline对性能的影响

inline修饰的函数,在编译的时候会在调用处展开,这样的好处是调用处会直接运行inline的内部逻辑,无需跳转指令,这样可以提升性能。

2021-11-30 11:11:45 236

原创 软中断学习

前言以前一直不知道软中断是如何工作的,只知道其优先级比硬中断低,深入看了一下代码,恍然大悟。先说结论:软中断的本质是内核线程!1、初始化软中断的线程early_initcall(spawn_ksoftirqd);其中线程的个数是和cpu个数一致的,也就是说软中断是并发执行了,因此很多书籍上说软中断必须是可重入函数,原因就在这。2、软中断是在编译阶段就定义好的,也就是说是固定在代码中不可修改的。参考链接:https://0xax.gitbooks.io/linux-insides/conte

2021-11-29 10:09:52 443

原创 linux .config的生成方式

1、make xxx_defconfig2、cp arch…/xxx_defconfig .configmake menuconfig因为.config是基于xxx_defconfig与Kconfig共同生成的,所以即使defconfig相同,.config也不一定相同

2021-09-26 14:34:25 1365

原创 starting init: /sbin/init exists but couldn‘t execute it (error -8)

我使用单独的内核与yocto编译出的文件系统,内核启动时出现这个报错。-8 这个值代码的是格式错误,目前怀疑是单独编译的内核与yocto的工具链不一致导致的此问题。使用yocto编译出的内核与文件系统可以完全匹配使用。...

2021-09-17 15:37:48 1097

原创 忘记linux密码后修改的措施(基于uboot)

uboot是可以修改内核传参的,在bootargs参数后添加init=/bin/sh这是令linux在shell启动。当然,你的uboot需要有串口打印才行,这样才会接收到shell,然后shell中通过passwd命令修改密码,whoami查看用户名即可。...

2021-09-17 15:33:27 1080

原创 linux initrd

bootloader在启动linux内核时,会运行一个initrd的ram文件系统,文件系统中有一个init脚本,用来加载驱动模块和挂载真正的根文件系统。

2021-08-27 16:50:05 100

原创 linux进程

一、简单聊一下linux的用户态进程都是基于init进程fork出来的,Linux分为用户栈和内核栈,内核栈是内核态运行的栈空间,具体的栈初始化是基于处理器来实现的,例如arm的msp和psp,分别给用户和线程独立用于调度切换使用。linux本质上也是如此,内核初始化的时候,会创建一个init线程,用户态所以的进程fork都是基于init来进行的。二、进程调度方式linux进程调度分几种,前两种用于实时系统:SCHED_FIFO,顾名思义,如果一个进程设置为此模式,然后优先级当前最高,一直占用C

2021-08-24 14:26:19 93

原创 LD_PRELOAD的用法

LD_PRELOAD顾名思义,就是重新加载链接库。一般用于链接库的重定向,例如linux测试lockdep的测试代码,就使用了此功能。进入源码中的cd linux-stable-rt-4.19/tools/lib/lockdep cat lockdep#!/bin/bashLD_PRELOAD="./liblockdep.so $LD_PRELOAD" "$@"其实大概意思就是LD_PRELOAD=./liblockdep.so.4.19.148 ./tests/AA赋值给LD_P

2021-08-18 14:22:52 1437

原创 linux高级睡眠及唤醒方式

修改状态为TASK_INTERRUPTIBLE,然后调用调度器。set_current_state(TASK_INTERRUPTIBLE);freezable_schedule();唤醒进程的方式需要获取任务结构体,然后调用wake_up_process唤醒进程。pid = find_get_pid(pid_nr);ts = pid_task(pid, PIDTYPE_PID);put_pid(pid);wake_up_process(ts);这样做的好处是调用接口层次低,实时性高。

2021-07-23 16:17:09 261

原创 linux 内核处理ioctl

编写内核模块时,有时候会使用ioctl,但是传参时ioctl有一些预定义的命令,这些命令会被响应,导致不能到达用户的内核处理程序,所以一定要注意。预定义命令分为 3 类:• 可对任何文件发出的(常规, 设备, FIFO, 或者 socket) 的那些.• 只对常规文件发出的那些.• 对文件系统类型特殊的那些.具体详见内核头文件ioctls.h...

2021-07-23 16:06:31 194

原创 linux sysfs和proc两种文件系统

proc和sysfs都是内核创建出来的文件系统,proc的创建要比sysfs容易一些,所以很多人选择使用proc来和内核交互

2021-07-23 15:57:59 220

原创 linux shell编写镜像制作工具

UCAS_INPUT_KERNEL_PATH=/ucas/input/kernel/UCAS_INPUT_FS_PATH=/ucas/input/fs/UCAS_INPUT_BOOTFS_PATH=/ucas/input/efi/UCAS_INPUT_BOOTFS1_PATH=/ucas/input/grub/UCAS_OUTPUT_KERNEL_PATH=/ucas/output/kernel/*UCAS_OUTPUT_FS_PATH=/ucas/output/fs/*UCAS_OUTPUT

2021-06-29 16:25:42 267

原创 openwrt编译自己的模块注意事项

1、放在package下的xxx文件为自己的项目,项目下的第一层Makefile注意一定不要有语法错误。2、最底层的src中的Makefile生成的可执行文件名,必须和最终的包名一致,不然会报错,找不到执行文件。...

2021-04-25 11:41:36 170

原创 ubuntu更新gcc和python

sudo add-apt-repository ppa:ubuntu-toolchain-r/testsudo apt updatesudo apt install gcc-6sudo apt install g++-6sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6

2021-04-16 14:35:54 165

原创 vnc server配置

#!/bin/shUncomment the following two lines for normal desktop:unset SESSION_MANAGERexec /etc/X11/xinit/xinitrc[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup[ -r $HOME/.Xresources ] && xrdb KaTeX parse error: Expected 'EOF', got '#'

2021-04-08 10:57:10 134

原创 linux 下端口占用查询指令

netstat -tunlp查询某个进程的占用情况,例如nginxnetstat -tunlp | grep nginx

2021-03-31 14:48:29 62

原创 nginx配置esp32 ota服务器

我使用ESP32的OTA升级SDK,需要使用https协议下载固件包。我采用的方式是在服务器上使用nginx配置下载路径,也就是修改配置文件即可。配置信息如下:server {listen 443 ssl;listen 8082;server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; ssl_certificate /usr/l

2021-03-16 15:29:08 482

原创 linux shell启动多个进程的注意事项

启动多进程时,一定注意在长时间运行进程后添加 &或者nohup,将进程托管给后台,但是这两个命令是有区别的。nohup在当前shell进程被终止后,可以继续在后台运行,而&在shell退出后也会退出。这是网上的说法,我测试使用nohup会阻塞后边程序,需要加&才能顺序启动进程,nohup只有将输出存储到nohup.out的功能而已当我结束shell之后,进程会退出,并不会保留在后台。例如编写一个test.sh程序:unset DISPLAYexport DISPLAY=:0

2021-01-25 16:53:28 2096

原创 C语言不细心造成的问题教训记录

1、变量边界不细心造成的问题,int cmd_decode(const char *input){if(input[0] != 0x90U){//do something}}input变量为char类型,而0x90U为无符号,0x90>128所以为负数,有些编译器不会对变量进行强制转换,认为左值为负数,右值为正数,造成不等的判断成立(经过测试在arm64架构下,变量会强制转换为相同的类型,而x64架构不会转换造成0x90 != 0x90U),所以一定要注意此问题。...

2021-01-22 11:49:02 121

原创 git 提交代码到gitee

1、在gitee上创建项目2、git clone http//:xxxx.git3.将所需添加文件拷贝到本地git目录4.git add ./xxx 将文件添加5.git commit -m “add xxx” 提交代码6.git push origin master 将本地代码提交到远程

2021-01-06 12:25:40 173

原创 ffmpeg文件找不到的问题

这种情况一般是ffmpeg版本过老的原因,最好解决办法是下载源码重新编译安装新库,并编译时指定新库的路径。CMakeLists.txt:project(projectname_ffmpeg)set(CMAKE_CXX_STANDARD 14)include_directories(/usr/local/ffmpeg/include/)link_directories(/usr/local/ffmpeg/lib/)add_executable(exec_name src/main.cpp)tar

2020-12-23 13:55:45 6227

原创 LK系统(cboot) .ld文件分析

little kernel 是一款用于安卓及大部分嵌入式系统的bootloader英伟达nx的cboot就是基于此系统1、分析.ld文件. = ALIGN(8); #分配8字节对齐的内存空间给__commands_start__commands_start = .;KEEP ((.commands)) #将所有包含.commands的段进行存储__commands_end = .;#记录.commands结束位置,后面的和此操作一致,这样就能获取所有包含.commands的变量段在程序中调用s

2020-12-22 11:47:56 885

原创 linux下定位段错误等问题的位置

linux 下调试c程序的方式有很多种,例如backtrace、gdb我个人还是觉得gdb更简单方便,特别是gdb attach pid的方式,直接开一个窗口对指定pid程序进行调试,可以快速定位到程序错误的位置,backtrace很多时候会定位不准,毕竟gdb是编译级别的定位。所以以后查找bug尽量使用gdb...

2020-12-15 11:13:03 347

原创 查找程序的ppid(守护进程)

linux程序关闭后重启,说明有守护进程。需要通过/proc/pid号查看ppid

2020-11-04 19:17:03 1146

原创 linux 下的x11开发

x11类unix下的图形界面的标准协议,linux下一般都使用xlib库进行简单界面开发,但是由于协议复杂,目前都采用gtk或者QT进行开发,但是这两个软件本质上都是使用xlib库进行的封装。xlib开发可参考的比较好的项目https://github.com/yetanothergeek/xctrl这是一个将xlib封装为lua接口的项目,很有参考意义,可以基于这些接口自己定制。...

2020-10-28 17:19:53 1246

原创 编译安装linux内核需要注意的问题

1、缺少各种头文件的问题这种情况有些时候是缺少安装库,例如缺少ssl.h等问题,需要安装libssl还有一种是缺少usr/include下的头文件,因为生成的Makefile里面指定的头文件都是linux内核中的头文件,可以修改Makefile,-I /usr/include 指定本机的头文件目录...

2020-10-27 10:39:04 172

原创 轻量级桌面LXDE

sudo apt-get install lxde

2020-10-23 19:01:02 462

原创 tweak hide ubuntu top bar

sudo add-apt-repository ppa:tualatrix/ppa (maybe dont need)sudo apt-get install gnome-tweak-toolsudo apt-get install gnome-shell-extension-autohidetopbar

2020-10-21 14:22:27 212

stm32l476rg.pdf

Ultra-low-power with FlexPowerControl – 1.71 V to 3.6 V power supply – -40 °C to 85/105/125 °C temperature range – 300 nA in V BAT mode: supply for RTC and 32x32-bit backup registers – 30 nA Shutdown mode (5 wakeup pins) – 120 nA Standby mode (5 wakeup pins) – 420 nA Standby mode with RTC – 1.1 µA Stop 2 mode, 1.4 µA with RTC – 100 µA/MHz run mode (LDO Mode) – 39 μA/MHz run mode (@3.3 V SMPS Mode) – Batch acquisition mode (BAM) – 4 µs wakeup from Stop mode – Brown out reset (BOR) – Interconnect matrix • Core: Arm ® 32-bit Cortex ® -M4 CPU with FPU, Adaptive real-time accelerator (ART Accelerator™) allowing 0-wait-state execution from Flash memory, frequency up to 80 MHz, MPU, 100DMIPS and DSP instructions • Performance benchmark – 1.25 DMIPS/MHz (Drystone 2.1) – 273.55 CoreMark ® (3.42 CoreMark/MHz @ 80 MHz) • Energy benchmark – 294 ULPMark™ CP score – 106 ULPMark™ PP score • Clock Sources – 4 to 48 MHz crystal oscillator – 32 kHz crystal oscillator for RTC (LSE) – Internal 16 MHz factory-trimmed RC (±1%) – Internal low-power 32 kHz RC (±5%) – Internal multispeed 100 kHz to 48 MHz oscillator, auto-trimmed by LSE (better than ±0.25 % accuracy) – 3 PLLs for system clock, USB, audio, ADC • Up to 114 fast I/Os, most 5 V-tolerant, up to 14 I/Os with independent supply down to 1.08 V • RTC with HW calendar, alarms and calibration • LCD 8× 40 or 4× 44 with step-up converter • Up to 24 capacitive sensing channels: support touchkey, linear and rotary touch sensors • 16x timers: 2x 16-bit advanced motor-control, 2x 32-bit and 5x 16-bit general purpose, 2x 16- bit basic, 2x low-power 16-bit timers (available in Stop mode), 2x watchdogs, SysTick timer • Memories – Up to 1 MB Flash, 2 banks read-while- write, proprietary code readout protection – Up to 128 KB of SRAM including 32 KB with hardware parity check – External memory interface for static memories supporting SRAM, PSRAM, NOR and NAND memories – Quad SPI memory interface • 4x digital filters for sigma delta modulator • Rich analog peripherals (independent supply) – 3x 12-bit ADC 5 Msps, up to 16-bit with hardware oversampling, 200 µA/Msps – 2x 12-bit DAC output channels, low-power sample and hold – 2x operational amplifiers with built-in PGA – 2x ultra-low-power comparators • 20x communication interfaces – USB OTG 2.0 full-speed, LPM and BCD – 2x SAIs (serial audio interface) – 3x I2C FM+(1 Mbit/s), SMBus/PMBus – 5x USARTs (ISO 7816, LIN, IrDA, modem)

2019-06-26

stm32f411ce.pdf

Dynamic Efficiency Line with BAM (Batch Acquisition Mode) – 1.7 V to 3.6 V power supply – - 40°C to 85/105/125 °C temperature range • Core: Arm ® 32-bit Cortex ® -M4 CPU with FPU, Adaptive real-time accelerator (ART Accelerator™) allowing 0-wait state execution from Flash memory, frequency up to 100 MHz, memory protection unit, 125 DMIPS/1.25 DMIPS/MHz (Dhrystone 2.1), and DSP instructions • Memories – Up to 512 Kbytes of Flash memory – 128 Kbytes of SRAM • Clock, reset and supply management – 1.7 V to 3.6 V application supply and I/Os – POR, PDR, PVD and BOR – 4-to-26 MHz crystal oscillator – Internal 16 MHz factory-trimmed RC – 32 kHz oscillator for RTC with calibration – Internal 32 kHz RC with calibration • Power consumption – Run: 100 µA/MHz (peripheral off) – Stop (Flash in Stop mode, fast wakeup time): 42 µA Typ @ 25C; 65 µA max @25 °C – Stop (Flash in Deep power down mode, slow wakeup time): down to 9 µA @ 25 °C; 28 µA max @25 °C – Standby: 1.8 µA @25 °C / 1.7 V without RTC; 11 µA @85 °C @1.7 V – V BAT supply for RTC: 1 µA @25 °C • 1×12-bit, 2.4 MSPS A/D converter: up to 16 channels • General-purpose DMA: 16-stream DMA controllers with FIFOs and burst support • Up to 11 timers: up to six 16-bit, two 32-bit timers up to 100 MHz, each with up to four IC/OC/PWM or pulse counter and quadrature (incremental) encoder input, two watchdog timers (independent and window) and a SysTick timer • Debug mode – Serial wire debug (SWD) & JTAG interfaces – Cortex ® -M4 Embedded Trace Macrocell™ • Up to 81 I/O ports with interrupt capability – Up to 78 fast I/Os up to 100 MHz – Up to 77 5 V-tolerant I/Os • Up to 13 communication interfaces – Up to 3 x I 2 C interfaces (SMBus/PMBus) – Up to 3 USARTs (2 x 12.5 Mbit/s, 1 x 6.25 Mbit/s), ISO 7816 interface, LIN, IrDA, modem control) – Up to 5 SPI/I2Ss (up to 50 Mbit/s, SPI or I2S audio protocol), SPI2 and SPI3 with muxed full-duplex I 2 S to achieve audio class accuracy via internal audio PLL or external clock – SDIO interface (SD/MMC/eMMC) – Advanced connectivity: USB 2.0 full-speed device/host/OTG controller with on-chip PHY • CRC calculation unit • 96-bit unique ID • RTC: subsecond accuracy, hardware calendar • All packages (WLCSP49, LQFP64/100, UFQFPN48, UFBGA100) are ECOPACK ® 2 Table 1. Device summary Reference Part number STM32F411xC STM32F411CC, STM32F411RC, STM32F411VC STM32F411xE STM32F411CE, STM32F411RE, STM32F411VE WLCSP49 ???? UFQFPN48 (7 × 7 mm) UFBGA100 (7 × 7 mm) (2.999x3.185 mm) LQFP100 (14 × 14mm) LQFP64 (10x10 mm) www.st.com Contents STM32F411xC STM32F411xE

2019-06-26

空空如也

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

TA关注的人

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