自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 资源 (5)
  • 收藏
  • 关注

原创 shell sed命令实现自动化批量修改文本文件中首个匹配到的关键字

sed命令是一个非交互式的行文本编辑器,它能对文件内容进行编辑,默认每次处理文本文件中所匹配到一行内容到模式空间,然后用后面的命令进行操作,操作完成之后,会把模式空间里面的内容输出到屏幕上,然后把模式空间中的内容删除,同时把下一行所匹配到的内容读入模式空间内,依次循环,直到读取完整个文件。a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);6s/要搜索的字符串/替换成的字符串/g。

2024-04-15 22:56:40 462

原创 编译和执行过程中的共享库问题

编译通过但是执行文件的时候出现查找不到共享库问题

2022-10-28 10:24:45 212 1

原创 GNU链接脚本学习-最简链接脚本

最简连接脚本必备的元素注: 这里的最简是指能成功生成.bin文件的最简,不代表一定能使MCU跑起来,要跑起来还得指定中断向量表以及堆和栈指定入口ENTRY(ramcode_start), 其中ramcode_start是汇编程序标号定于存储介质/* Specify the memory areas */MEMORY{FLASHCODE(rx) : ORIGIN = 0x8040000, LENGTH = 128KFREERAM (xrw) : ORIGIN = 0x20019000

2021-11-26 16:55:37 749

转载 GNU 链接脚本学习

很少有系统地讲解链接器的工作原理和语法规则的教程,当初笔者自学时也是费尽周折才淘到一些有价值的学习资料,现将我淘到的资料分享一下:GNU ld linker script 链接脚本详解:https://www.cnblogs.com/idalink/articles/11800860.html配套例程:https://github.com/iDalink/ld-linker-script知乎,链接脚本https://zhuanlan.zhihu.com/p/383729996官方英文文档:h

2021-10-20 17:48:58 165

原创 将源码文件链接到指定段

你可能经常有这样的需求:一部分特殊程序希望跑在RAM里,其余程序跑在norFLash, 这时你就可以将期望跑在RAM里的函数汇聚到一个.c文件中,例如汇聚到insert_ramcode.c, 然后在链接脚本中就可以把这个文件安排在你设计的地址段,有着极大的灵活性 /*Store in flash but copy to ram run*/ .RAMCODE : { *(.RAMCODE) APP_ZX_BOOT/insert_ramcode.o } >FREERAM

2021-10-20 17:30:28 373

原创 将函数链接到指定段

不同的编译器控制语句不同,但基本大同小异,本文使用的编译器是GNU 编译工具链。使用编译控制语句告诉链接器将其放到指定段attribute((section(".RAMCODE")))这种方式必须在每个函数的开头声明。如果嫌这样太麻烦,你可以直接在链接脚本中指定文件名来实现将整个文件安排到指定段,详见我另一篇博文《将某个源码文件链接到指定段》查看编译后的map文件,确实给放到这个段里了...

2021-10-20 17:02:03 573

原创 GNU下C函数中调用汇编

GNU下C函数中调用汇编汇编文件.text.syntax unified.thumb这三条是开头固定内容,指明这是程序代码、遵循统一的规范、支持thumb指令集.type funname,%function 声明这是个函数.global funcname 导出符号使得外部可见,即可导出函数也可导出全局变量这里汇编函数结束前必须把PC改回原断点处,否则执行结果是0不是33.声明一下以便C函数调用C文件C中先包含一下头文件,然后就像调C函数一样调用即可结果...

2021-10-12 17:51:57 119

原创 用GDB查异常产生的原因

2021-05-17 12:29:29 307

原创 C语言函数指针数组

C语言函数指针数组怎样定义?函数指针定义:int (*g_pfunc)(int , int ); //定义一个函数指针也可以带形参,如同这样:int (*g_pfunc)(int a , int b ); //定义一个函数指针函数指针数组定义:int (*g_pfunc[9])(int , int ); //定义一个函数指针数组int (*g_pfunc[9])(int a , int b); //定义一个函数指针数组将函数指针定义成一个自定义类型typedef int (*cm

2021-03-25 18:07:38 301 1

原创 浮点数在内存中的存储形式

2020-09-03 17:18:46,699 | INFO | nioEventLoopGroup-5-3 | c.a.s.h.ContentValidateHandler:29 | 消息校验通过2020-09-03 17:18:46,699 | INFO | nioEventLoopGroup-5-3 | c.a.s.h.HeaderParseHandler:34 | 解析出消息头:Header(imei=813463346541368, version=1, statusCode=NONE, e

2020-09-03 18:43:52 184

原创 void ** 二级指针用法

目的: 实现将子函数中的数据“浅拷贝”到上层函数(只把指针读进来)#include <stdio.h>char Buf[6]={1,2,3,4,5,6};int func_A(void **aplbuf, int *apllen){ *aplbuf = Buf; *apllen = 110;}int main(){ void *buf; int len; int i; char *p_buf; func_A(&buf, &len); p

2020-08-27 16:58:39 928

原创 linux C按日期动态实时建文件夹按小时建文件继scanf相关

效果:按天建文件夹,按小时建文件从串口读取库伦计的打印内容,过滤掉干扰字符后用scanf将关注的数字分离出来之后写入txt文件matlab从txt文件中读入数据绘图分析完整源码#include <signal.h>#include <unistd.h>#include <stdio.h>#include <string.h>#include <sys/stat.h>#include <sys/types.h>#in

2020-05-29 15:32:24 383

原创 linux下搭建gdb+jlinkGDBserver调试环境

先把工具准备好JLink-V9 淘宝百元款;STM32F103ZET6开发板;环境:UBUNTU16.4下载JLINK驱动,linux版的, JLink_Linux_V612i_x86_64.rar下载安装b别人做好的交叉编译工具链gcc-arm-none-eabi-7-2017-q4-major,内含编译器和调试器系列工具,arm-none-eabi-gdb就是其中的一个小工具;...

2020-04-21 16:53:38 3963 1

原创 在GCC环境下编译STM32的makefile解读

在GCC环境下编译STM32的makefile解读以下是comple.mk以下是makefile`以下是链接脚本``/***** File : LinkerScript.ld**** Abstract : Linker script for STM32F105RBTx Device with** 128KByte FL...

2020-04-16 13:37:16 816

原创 基于TCP模拟httpPOST到ONENET

用TCP实现HTTPHTTP与TCP的关系二话少说上代码生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入HTTP与TCP的关系http协议,简称超文本传输协议(Hypertext Transfer Protocol...

2020-04-01 15:50:16 1433

原创 shell 脚本集合操作

初衷:在兄弟目录下寻找类似目录树并将目录树拷过来合并到自己的目录树下## cp --parent `find 纯源码/ -name &amp;quot;*.[ch]&amp;quot;` 工程框架壳/set -a sourcefilelistline=0for f in `find 纯源码/ -name &amp;quot;src&amp;quot;`do sourcefilelist[$line]=&amp;quot;$f&amp;quo

2019-01-11 10:54:16 2594

原创 文件编码方式批量转换

在linux下运行如下脚本#!/bin/bashfor f in `find $1 -name &amp;quot;*.[ch]&amp;quot;`do encode=`file $f | awk '{print $4}'` if [ $encode = &amp;quot;ISO-8859&amp;quot; ]; then iconv -f GBK -t UTF-8 $f -o ${f}_utf8 rm $f mv ${f}_utf...

2019-01-05 11:39:45 537

原创 经验记录-CCS与动态编译

试验证明,CCS中lib是动态链接,只将用到的函数链接入目标文件,不用的不连接,所以移植的数学库不会导致额外的存储开销。而工程中的.c文件中的函数则全部链入,所以不用的最好删掉,或者将底层函数封成.lib。...

2018-12-19 17:35:00 581

原创 C语言函数调用上下文中的指针问题

目录全局指针做实参,子函数修改形参运行结果得出结论const与\*的结合1.char const *ptr;2.const char *ptr;3.char * const ptr;总结:全局指针做实参,子函数修改形参代码如上图,疑问如下:1. main函数中调用func1()时传的是全局指针,在func1()函数中有对形参做增减操作,这种增减会影响全局指针的指向吗?2. *a++ 究...

2018-11-15 21:04:52 858 1

转载 编译生成的.o文件,链接生成的可执行.elf,最终烧录到flash的东西之间到底是什么关系?

.o文件内容使用命令:objdump -h xxxx.o 打印主要段的信息objdump -x xxxx.o打印更多的详细信息objdump -s xxx.o将所有段的内容以16进制方式打印出来objdump -d xxx.o 或者-S将所有包含指令的段反汇编objdump -t xxx.o查看所有的符号以及他们所在段readelf -h...

2018-10-24 23:39:29 6031 2

转载 没被调用的函数与全局变量/静态变量会被编入.out文件吗?

对于函数自己写的而且没被调用的函数(注意不包括没有specialized的模板),如果不是inline或static,都会被编译,因为编译分两步,首先每个translation unit都会被编译为o file,然后所有o file会被链接成目标文件。而目标文件不一定是可执行程序,也可以是动态链接库,这个时候那些没被用过的函数当然要留下,因为如果是动态链接库那么它在未来任何时候都有可能被另一个程...

2018-10-24 21:49:31 1042

原创 运行时程序的.TEXT段在ROM上还是全搬到RAM上

问题stm32中的Code在程序运行时要不要拷贝到RAM里执行呢?还是直接从Flash中取程序指令执行?不是nand flash不能运行程序吗?难道STM32里用的是nor flash?解答(摘录自网友)代码不一定要在RAM中才能执行,CPU从一个存储器件中读取指令并执行,主要看的是该存储器能否实现随机读取(访问任意地址)。基于这个原理很多flash被修改成可以直接执行程序。STM是如何修...

2018-10-24 21:20:27 2786

原创 C# 子窗口跟随父窗口且显示在最顶层

从中可参考的知识点如何获得当前活动窗口using System.Runtime.InteropServices; [DllImport("User32.dll")] public static extern IntPtr GetForegroundWindow(); //获取活动窗口句柄 IntPtr hWnd = GetForegroundWindow(); /...

2018-10-20 14:47:47 8739

原创 C# 鼠标接近窗口边缘时自动弹窗

原理定时器定时轮询,读取鼠标当前位置,并与窗体边框位置比较,在附近的话就将子窗体的属性修改为show,否则修改为hide.这个子窗体要在主窗体创建的时候就创建,不能每次鼠标接近时临时建这样频繁建会导致系统性能变差,所以子窗口对象在本命名空间中应该是全局的。子窗体类要弹窗的界面风格就在此类中自定义using System;using System.Collections.Generic;...

2018-10-20 10:38:14 1596

原创 C# 定时关窗 & 跨线程操作窗口

添加定时器直接在代码中new一个定时器并绑定回调函数即可跨线程关闭其他窗口会报异常:解决方法:在你要操作的窗口的类的构造函数中指明允许跨线程操作。 public partial class AlarmInfoWindow : Form { public AlarmInfoWindow() { Initialize...

2018-10-19 16:11:30 1259

原创 C# 弹窗 && ListBox

目录如何弹窗简单弹窗复杂弹窗注意如何弹窗简单弹窗简单的窗口直接调用系统接口,如: MessageBox.Show("报警已清除");复杂弹窗一些自定义窗口,这就要新建一个类,然后创建对象,调用对象的show方法。新建窗口类修改类加入一些自定义的方法主要是用来修改控件状态。namespace EzHostCtrl{ public partial cla...

2018-10-19 14:48:56 559

转载 lcd驱动-虽无框架感但按裸机思路阐释硬件原理

在编写代码之前我们先来看一看原理图引脚说明: VCLK:发出lcd时钟信号,每来一个时钟,就会在屏幕上显示一个像素 ——GPC1 :配置为lcd引脚 VLINE:发出lcd行扫描信号 ——GPC2 :配置为lcd引脚 VFR...

2018-07-03 23:40:43 491

转载 pinctrl子系统

见附件文档,讲得很详细:点击打开链接pintrl代码讲解,很详细:点击打开链接

2018-02-08 16:00:31 282

原创 UBOOT命令怎么自己添加 嵌入式汇编控制cpu CACH

#include #include /*static inline int __raw_readsb(unsigned int addr, void *data, int bytelen){ __asm__ __volatile__ ("1:ld.dir8, [r0]\n" "sub.fr2, r2, 1\n" "bnz.d1b\n" "stb.abr8, [r1,

2017-12-16 11:36:49 265

转载 转载:Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化

Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化

2017-12-09 21:20:35 400

原创 SPI设备端驱动编写----基于linux4.9 driver核心层

【前序】linux下写驱动是站在巨人的肩膀上做开发,不用完全从头做起,甚至你不需要懂SPI时序,照样能写出可用的驱动,原因是:控制器驱动一般芯片商早已写好(linux4.9中针对xilinx zynqmp系列cpu是 drivers/spi/spi-cadence.c),怎么发、怎么操作CPU寄存器这些细节都是控制器驱动干的事,设备端驱动不需要关心。我们所要做的便是用核心层提供的API注册进去,调

2017-11-02 16:10:25 4828 1

转载 为程序选择在哪个cpu上跑

首页 > Scheduler > CPU亲和性的使用与机制 CPU亲和性的使用与机制 Scheduler 2013-08-15 CPU的亲和性, 就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,亲和性是从affinity翻译过来的,应该有点不准确,给人的感觉是亲和性就是有倾向的意思,而实际上是倒向的意思,称为CPU关联性更好,程序员的土话就是绑定CPU,绑核。在

2017-08-17 19:55:09 2198

转载 指定代码放哪个cpu运行

如何指定进程运行的CPU coolshell最新的文章《性能调优攻略》在“多核CPU调优”章节,提到“我们不能任由操作系统负载均衡,因为我们自己更了解自己的程序,所以,我们可以手动地为其分配CPU核,而不会过多地占用CPU0,或是让我们关键进程和一堆别的进程挤在一起。”。在文章中提到了Linux下的一个工具,taskset

2017-08-17 19:23:20 679

原创 GNU C中嵌入汇编添加一个自定义uboot命令

二话没用,直接上代码:#include #include /*static inline int __raw_readsb(unsigned int addr, void *data, int bytelen){ __asm__ __volatile__ ("1:ld.dir8, [r0]\n" "sub.fr2, r2, 1\n" "bnz.d1b\n" "st

2017-08-05 18:58:27 280

转载 linux自动加载模块,理解linux启动流程

为 搞清楚如何在系统启动时自动加载模块,搜索了好久,网上有很多人提出这个问题,但都没有正确的答案,无论是中文社区还是英文社区,大家的回答都没有讲到点 子上,无非是围绕 modprobe.conf、modprobe讲来讲去的,要不就是针对特定问题尝试不同的方法。有的还建议把modprobe modulename写入rc.local,却不曾想,rc.local的执行被放在整个启动顺序的很后面,而启

2017-07-08 18:53:09 383

原创 zigbee

一、服务端把自己注册进servicemanager其中死循环中是这样的:二、客户端从servicemanager中得到服务并用它来帮客户端解决任务:

2017-03-20 19:10:04 389

原创 inotify + epoll实现热插拔检测

概述:inotify检测目录下文件的新建与删除,epoll监测某个文件被写了还是被读了。二者结合实现热插拔检测。inotify介绍:/* 功能: 初始化inotify 返回值: inotify的文件描述符,以后的add操作将要用到*/ int inotify_init(void);/* 功能: 将某个目录加入到监控中 输入参数: fd---初始化

2017-03-01 21:23:14 682 1

原创 LED子系统

kobject与sysfs:设备和驱动的最基本单位都是基于kobject实现的。 kobject对应/sys/xxx_bus/或者/sys/class/下的某个目录, kobject中有包含了一些属性,对应/sys/xxx/xxx/下面的狗哥文件。kobject与文件层次之间的关系实例:实例:

2017-02-27 15:35:55 215

原创 JNI中传数组与字符串

1.传数组:java端:JNI端:传字符串:1.java端:2.jni端:

2017-02-27 13:36:11 340

原创 andriod底层最简开发流程

动态jni:1.java端:静态初始化块:加载类时就执行,去加载本地库用native 声明本地方法jni端:这里面函数和变量的定义规则不同,除了void型,其他记得加j前缀,JNI_OnLoad()函数,很重要将jni编译生成动态库:arm-linux-gnueabi-gcc -shared -fPIC -I /usr/lib/jvm/java-7-openjdk-amd64/include

2017-02-25 12:18:56 776

JUMPtest.rar

将指定的函数和insert_ramcode.c放到SRAM中运行,其余代码运行在flash,实测通过

2021-10-20

arm-none-gcc + JLINKgdbSERVER.rar

在Ubuntu16.4 下用jlinkv9调试STM32F103,亲测成功,所有源码及过程打包在此,也可以参考我的博客《linux下搭建gdb+jlinkGDBserver调试环境》链接https://blog.csdn.net/u010243305/article/details/105659463

2020-04-21

普通单片机怎么使用DM900

普通单片机怎么使用DM900,详细介绍了DM900的电路图连接和编程

2016-12-12

io多路复用解析

io多路复用解析

2016-12-07

51系统板.SchDoc

51+74HC573+蜂鸣器+最小系统板(向外引出针脚方便连接和拓展)

2014-05-22

空空如也

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

TA关注的人

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