自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(215)
  • 资源 (16)
  • 收藏
  • 关注

原创 RISC-V调用惯例

RISC-V调用惯例

2022-07-19 14:48:06 803 1

原创 rtthread开关中断

1 rtthread开关中断函数(cortex-m)/* * rt_base_t rt_hw_interrupt_disable(); */.global rt_hw_interrupt_disable.type rt_hw_interrupt_disable, %functionrt_hw_interrupt_disable: MRS r0, PRIMASK CPSID I BX LR/* * void rt_hw_interrupt_ena

2022-04-15 11:30:03 4490

原创 链接脚本(二)简单的例子

3.2 简单的链接脚本示例很多链接脚本是相当简单的。最简单的可能是链接脚本只有一条命令:‘SECTION’。可以使用’SECTION’命令描述输出文件的内存布局。‘SECTION’命令是一个非常强大的命令。这里我们只描述简单的使用。我们需要假设你的程序只包括代码,初始化的数据和未初始化的数据。他们将被分别的放在’.text’, ‘.data’, ‘.bss’ 段中。假设在输入文件中只有这些段出现。对于这个例子,我们假设代码从0x10000地址被加载,并且数据开始地址是0x8000000。下面的链接脚

2022-03-24 14:08:37 774

原创 链接脚本(一)基本概念和格式

3 链接脚本每一个链接都有一个链接脚本控制。链接脚本通过链接器命令语言编写的。链接脚本的主要目的是描述输入文件中的sections(段)应该如何映射到输出文件中,并且控制输出文件的内存布局。大部分链接脚本主要做这两件事。然而,必要时,链接脚本可以使用下面描述的命令指导链接器执行其他的操作。链接器必须使用一个链接脚本。如果没有提供自己的链接脚本,链接器将使用默认的链接脚本,一般情况下这个连接脚本被编译到了连接器的可执行文件中。可以使用"--verbose"命令行选项查看链接器的默认脚本。某些命令行选项如

2022-03-24 11:26:56 2445 2

原创 GNU 软件文档下载

gcc相关文档gcc官网https://gcc.gnu.org/https://gcc.gnu.org/gcc相关manual相关文档下载https://gcc.gnu.org/onlinedocs/https://gcc.gnu.org/onlinedocs/GNU官方网站https://www.gnu.orghttps://www.gnu.org可以找很多开源软件的文档如glibc,gcc等Software- GNU Project - Free Software Fou

2022-02-28 15:25:14 1005

原创 Shell各种括号的作用

技巧小结:字符串比较用双中括号[[ ]]算数比较用单中括号[ ]——左右留空格算数运算用双小括号(( ))shell命令及输出用小括号( )——左右不留空格快速替换用花括号{ }——左右留空格反单引号起着命令替换的作用一、单括号()1、另开命令组——小括号中的内容会开启一个子shell独立运行;括号中以分号连接,最后一个命令不需要;各命令和括号无空格2、得到命令输出——a=$(command), 等同于a=$`command`,得到命令输出传递给变量a3、初始化数组—.

2022-01-25 11:34:16 317

原创 repo remote元素中fetch=“.“或者“..“的理解

在使用repo时,一般情况下,通过remote元素的fetch属性和project元素的name属性就能确定project远程仓库的url,通常情况下就是:${remote_fetch}/${project_name}.git1 通常情况下fetch给出的是一个网址:<manifest> <remote name="aosp" fetch="https://android.googlesource.com" review="https://10.10.10.29" /&

2022-01-13 10:58:04 2868

原创 MIPI传输全局流程图

这张图非常重要,应该学会看这张图。低功耗传输流程低功耗数据传输流程(LPDT),首先MIPI的DPHY有三中操作模式,分别是高速传输模式、控制模式和逃逸模式(Control, High-Speed, and Escape),如图,可以看到LPDT(Low-Power Data Transmission)是在逃逸模式(Escape Mode)下完成的,如果想执行低功耗传输,那必须先进入逃逸模式,也就是Stop---->LP-Rqst-->Escape Mode命令---&gt...

2021-11-13 14:38:18 1602

原创 MIPI在Escape Mode模式下的编码

The PHY in Escape mode shall apply Spaced-One-Hot bit encoding for asynchronous communication. Therefore, operation of a Data Lane in this mode does not depend on the Clock Lane. The complete Escape mode action for a Trigger-Reset command is shown in F...

2021-11-13 14:09:42 1358

原创 Linux下获取WIFI状态信息(c语言)

编译时需要 -lwpa_clientwifi.h#ifndef __WIFI_H__#define __WIFI_H__int wifi_run_cmd(char *cmd, char *result, unsigned int *len);/* ack: * RSSI=-77 * LINKSPEED=48 * NOISE=9999 * FREQUENCY=2437 */struct wifi_signal_poll_result_t { char ack[1024];.

2021-10-21 16:05:19 4116 2

原创 Linux下c语言获取路由接口--思路

对于读取路由列表,可以通过 /proc/net/route文件进行读取具体如何读取可以参考,busybox中的函数。void FAST_FUNC bb_displayroutes(int noresolve, int netstatfmt);对于设置,需要使用 struct rtentry配合ioctrl,可以参考busybox的函数。static NOINLINE void INET_setroute(int action, char **args);#include &lt.

2021-10-20 15:11:43 1299

原创 Linux下通过C语言管理网络--基于ioctl

Linux下通过ioctl接口获取和设置IP地址,获取和设置mac地址,获取和设置网卡当前状态

2021-10-20 14:50:26 1752

原创 Linux通过c语言函数管理网络(1)-----获取/修改IP和MAC地址

在Linux下编写程序经常遇到需要对网卡进行管理,但是在glic库中或者其他函数库中却发现没有境界能用的API。有的人在程序中通过system()执行ifconfig命令进行配置,但是获取参数却很麻烦,也有的人通过int getifaddrs(struct ifaddrs **ifap);去获取ip地址等信息,但是只能获取,却不能配置。还有是通过io...

2021-10-19 16:35:35 4197 4

原创 rtnetlink消息和netlink消息关系

rtlink消息内存布局如下:RTM_NEWLINK, RTM_DELLINK, RTM_GETLINK消息示例:(规则: 每个 "|" 都需要4字节对齐)+-----------------------------------------------------------------------------------------+| struct nlmsghdr | struct ifinfomsg | struct rtattr | data | struct rtattr | .

2021-10-16 10:40:51 891

原创 netlink socket

#include <asm/types.h>#include <sys/socket.h>#include <linux/netlink.h>netlink_socket = socket(AF_NETLINK, socket_type, netlink_family);1 netlink socketNetLink被用于在内核和应用之前传输信息,在用户空间编程使用标准的socket相关的API接口,在内核空间使用kernel内部的API接口。Net.

2021-10-16 09:31:37 1791

原创 netlink常用宏理解

struct nlmsghdr { __u32 nlmsg_len; /* Length of message including header */ __u16 nlmsg_type; /* Message content */ __u16 nlmsg_flags; /* Additional flags */ __u32 nlmsg_seq; /* Sequence number */ __u32 nlmsg_pid; /* Sending process port ID */}.

2021-10-15 16:48:13 777

原创 ubuntu下好用的工具

文件比较工具: meld串口终端: putty截图工具: flameshot

2021-09-30 15:04:07 305

原创 嵌入式Linux多网卡路由表配置

摘要很多时候我们的嵌入式Linux产品会有多个网卡,包括以太网,WIFI和移动网络,尤其是产品在调试阶段一般都会配有以太网,用于连接我们的调试主机。工作中可能会遇到通过以太网连接调试主机,挂载主机的NFS,应用程序放在主机的NFS上。但是应用的网络需要使用WIFI而不是以太网,但是以太网方便调试,又不想关掉,所以需要以太网和WIFI同时工作,那么就需要配置WIFI和以太网在不同的网段,通过路由表指定哪些目的地址通过那个网卡连接。1 我自己的需求为了给嵌入平台做高低温试验,我的办公室在6...

2021-09-30 14:55:17 1720

原创 戴尔电脑装ubuntu报ACPI错误解决过程

电脑型号:OptiOlex 7090CPU: I9-10900K显卡: GT1650S内存: 128GB硬盘: 2T nvem系统: ubuntu18.04网卡:英特尔 I219装机报错:ACPI BIOS Error....解决办法:1. 在安装ubuntu的时候,输入 'e',然后编辑Linux启动命令行,把命令行的"---"替换成"nomodeset"。然后继续安装,忽略终端输出的ACPI错误。2.安装完成以后,重启,再出现BIOS界面的时候,按住shift,进入..

2021-09-27 15:10:03 9234 5

原创 关于sync()函数的使用

在UNIX环境高级环境编程中,大家应该都看到过:sync函数 sync函数只是将所有修改过的块缓冲区排入写队列,然后就返回,它并不等待实际写磁盘操作结束。 通常称为update的系统守护进程会周期性地(一般每隔30秒)调用sync函数。这就保证了定期冲洗内核的块缓冲区。命令sync(1)也调用sync函数上面这段话在Linux当中是不成立的。可以参考如下这段话:Since glibc 2.2.2, the Linux prototype for sync() is...

2021-09-10 09:53:25 2673 2

原创 Segmentation Fault (SIGSEGV) vs Bus Error (SIGBUS)

Bus ErrorCauseA process has received a signal indicating that it attempted to perform I/O to a device that is restricted or that does not exist. This message is usually accompanied by a core dump, except on read-only file systems.ActionUse a de

2021-09-08 14:27:29 334

原创 一个线程获取内存另一个线程释放内存造成内存泄漏

在使用君正x2000平台的时候,应用程序的内存占用会逐渐增大,之后应用程序最后会被kill掉。通过分析原因发现,在一个线程中申请内存,而申请的这个内存在另一个线程中进行释放,释放完成后这个线程结束,这样操作就会造成内存泄漏。这是很简单的生产者消费者的问题,理论上来说不应该出现这样的问题,所以在x86和arm下进行测试,并没有发现类似的情况,然后确定是君正x2000平台的问题。将问题提给了君正,目前君正正在排查。下面是我的简单的测试代码,大家可以测试以下自己的平台:#include <s

2021-08-13 10:51:32 714 1

原创 ffmpeg音频解码使用遇到问题总结

wav音频channel_layout为0在使用ffmpeg解码wav数据的时候,通道数是正确的,但是stream->codecpar->channel_layout为0,如果此时swr_alloc_set_opts(struct SwrContext *s, int64_t out_ch_layout, enum AVSampleFormat out_sample_fmt, int out_sample_ra

2021-08-13 10:43:54 1159

原创 alsa播放结束时的杂音问题

alsa的音频输出过程alsa播放音频的原理通过snd_pcm_writei()等函数将音频数据写到alsa的buffer中。alsa启动播放以后,alsa驱动会产生中断,每次中断从buffer中取走period个音频数据帧输出到codec。音频最后的数据不足一个periodalsa驱动从buffer中是按照一个完整的period个数据帧取走数据的,如果取走的一个period数据中,并不都是音频数据,可能有其他脏数据,那就可能在最后一帧产生噪音。首先关于buffer和frame的概念还不知道

2021-08-13 10:31:12 1427

原创 基于Linux的软件定时器(线程安全)

关于定时器中使用的队列,可以参考:https://blog.csdn.net/huohongpeng/article/details/117158406?spm=1001.2014.3001.5501sw_timer.h#ifdef __cplusplus extern "C" {#endif#ifndef __SW_TIMER_H__#define __SW_TIMER_H__/* 注意: * 1.所有定时器的回调函数均在同一个线程中执行,所以尽量不要执行

2021-08-06 10:51:32 725 2

原创 EMMC 擦除组的理解

背景在u-boot中升级镜像,会用到emmc擦除,但是在擦除emmc时,出现了警告:Caution! Your devices Erase group is 0x400The erase range would be change to 0x30000~0x303ff我擦除的起始块地址为:0x30000, 块个数为: 1,但是警告说擦除的范围是 0x30000~0x303ff,明显是擦除了1024个块。u-boot擦除源码drivers/mmc/mmc_write.c:79u.

2021-08-04 11:14:15 2382

原创 Linux设备树相关网址和规范

https://github.com/devicetree-org/devicetree-specification

2021-07-20 09:34:13 207

原创 paho.mqtt.c使用的总结

1 MQTTAsync_connectOptions中的onSuccess和onFailure1.1 onSuccess只有在新建连接成功的时候在会执行这个函数,重连过程不管是否成功都不会执行这个函数。但是通过MQTTAsync_setConnected();接口设置的回调函数,无论是由于什么情况进行了连接,都会执行这个函数。1.2 onFailure 无论是新建连接,还是重连,只要要连接失败,都会调用调用这个函数 MQTTAsync_connectOptions conn..

2021-07-02 14:33:12 1082

原创 paho.mqtt.c简单介绍

概述paho.mqtt.c 是Eclipse编写的开源mqtt c库,支持Posix标准操作系统(如Linux,Android,Mac)和windows操作系统。Paho MQTT C客户端支持全部MQTT协议客户端特性,它使用ANSI标准C编写。实际上这个库提供两套API,分别是"同步"的MQTTClient和“异步”的MQTTAsync,同步API目的是更加简单、更加有用的。为了达到这个目的,部分操作将被阻塞,直到这个操作完成,这样程序的框架更加简单。相反,在异步模式中只有一个调用会..

2021-07-01 11:52:30 9205

原创 嵌入式Linux热点分享网络(五)

Linux应用程序获取hostapd热点状态在hostapd的官网有一些关于应用程序访问hostapd简单的介绍。主要说的就是通过wpa_ctrl.c和wpa_ctrl.h中的接口进行访问。把这两个文件放入到c程序中就可以了,但是这两个文件很难放入到我们的工程源码中,因为这两个文件引用了hostapd源码中其他很多文件,不能单独使用。关于官网对hostapd如何使用,我把它贴在这里,详细的可以直接访问官网:http://w1.fi/wpa_supplicant/devel/hostapd_ctr

2021-06-29 10:36:11 854

原创 嵌入式Linux热点分享网络(四)

获取AP的状态信息(hostapd_cli)通过hostapd创建了AP热点,但是Linux如何知道都有哪些设备连接到了AP呢?hostapd是个后台服务程序,我们想知道它的状态可以通过hostapd_cli客户端对hostapd进行访问,进而获取到AP的状态和控制AP相关的功能。下面是hostapd功能框架hostapd_cli与hostapd是通过本地socket进行通信的,这个socket是hostapd启动以后根据hostapd.conf文件中的配置进行创建的,默认情况下的配置为

2021-06-29 10:12:35 2396 2

原创 嵌入式Linux热点分享网络(三)

udhcpd为局域网提供自动获取IP地址和DNS功能 创建好AP以后,STA终端可以连接到AP。此时STA想要连接到局域网就需要有IP地址,如果想连接到外网就需要网关。如果想连接到域名表示的外网,就需要dns服务器。 udhcpd是dhcp服务器,动态的提供IP地址,网关和DNS。所以一般AP端通过hostapod建立了无线的物理连接之后还需要提供DHCP服务功能,这样其他STA就可以获取IP地址等配置,只有获取到IP地址,才是真正意义上组成了局域网。udhcpd(/etc/udhc...

2021-06-29 09:07:43 586

原创 hostapd 创建5G热点

平台君正x2000WIFI模组: AP6256hostapd.confinterface=wlan0driver=nl80211ssid=ingenicchannel=44hw_mode=aieee80211n=1ieee80211ac=1macaddr_acl=0wmm_enabled=1 # QoS supportauth_algs=1ignore_broadcast_ssid=0wpa=2wpa_passphrase=12345678wp.

2021-06-25 13:57:33 2653 1

原创 嵌入式Linux热点分享网络(二)

内核开启 iptables功能1.iptables报错# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEiptables v1.8.3 (legacy): can't initialize iptables table `nat': Table does not exist (do you need to insmod?)Perhaps iptables or your kernel needs to be upgraded.一般

2021-06-23 17:00:15 595

原创 嵌入式Linux热点分享网络(一)

1.需要的工具软件hostapdudhcpdiptables2.hostapd工具http://w1.fi/wpa_supplicant/devel/用过WIFI的应该对wpa_supplicant这个工具有一定的了解。wpa_supplicant用于wifi连接AP、验证密码等功能,实现的是wifi sta相关功能。而hostapd工具用于实现WIFI AP相关的功能。hostapd包括IEEE 802.11接入点管理(认证/关联)、IEEE 802.1X/WPA/WPA2 .

2021-06-23 16:21:48 730 1

原创 Linux下基于libudev实现u盘自动挂载和卸载

void udisk_detection(void){ struct udev *udev; struct udev_monitor *monitor; struct udev_device *device; int fd; udev = udev_new(); monitor = udev_monitor_new_from_netlink(udev, "udev"); udev_monitor_filter_add_match_subsystem_devtype(monitor...

2021-06-21 11:37:36 821

原创 Linux下应用程序扫描并自动挂载u盘

int u_disk_scan_mount(void){ int ret = 0; struct udev *udev; struct udev_device *device; struct udev_enumerate *enumerate; struct udev_list_entry *first_entry; struct udev_list_entry *list_entry; const char *syspath; if (access("/tmp/udisk",...

2021-06-21 10:08:02 933 1

原创 Linux下u盘拔出后操作u盘可能会出现的异常

umount异常:当应用中存在打开的u盘中的文件或者目录,此时执行umount() U盘挂载点,umount()函数返回-1,并且设置errno=16 (Device or resource busy)写过程

2021-06-21 09:36:24 1274

原创 Linux应用编程之事件广播

event.h#ifndef __EVENT_H__#define __EVENT_H__struct event_handle { void *private; void *user_data;};/* * 1.创建事件,得到事件派发句柄. * 2.需要接收事件的线程或者模块可以注册回调 * 3.想要广播事件的线程或者模块发送事件,事件随后派发到每一个接收模块或者线程 * 4.所有需要接收事件的线程或者模块,注册的回调被执行 * 5.如果某一线程或者模块不在需要接收...

2021-06-18 10:30:15 337 1

原创 Linux获取设备节点的详细信息

#include <libudev.h>#include <stdio.h>#include <string.h>/* * libudev api说明 * https://mirrors.edge.kernel.org/pub/linux/utils/kernel/hotplug/libudev/ch01.html *//** * 打印/dev/xxx设备节点的properties值 * @devnode: 设备节点文件/dev/xxx,如...

2021-06-17 11:28:24 3377

ARM体系架构文档汇总

包括ARMv8-A,ARMv7-M等架构受手册。 中断控制器等手册。 Arm_Cortex-A_Comparison_Table_v4.pdf Arm_Cortex-M_Comparison_Table_v8.1.pdf arm_cortexm4_processor_trm_100166_0001_04_en.pdf ARM_IHI_0070_D_b_System_Memory_Management_Unit_Architecture_Specification.pdf corelink_gic_625_generic_interrupt_controller_trm_102143_0001_03_en.pdf corelink_pck600_power_control_kit_trm_101150_0005_01_en.pdf cortex_a55_trm_100442_0200_00_en.pdf DDI0403E_e_armv7m_arm.pdf DDI0406C_d_armv7ar_arm.pdf DDI0464F_cortex_a7_mpcore_r0p5_trm.pdf

2022-03-26

GNU链接器教程和规范

详细说明了链接器的使用及链接脚本的规范。以及命令行的命令说明。

2022-03-25

MIPI协议文档.zip

MIPI协议规范包括,MIPI DSI和MIPI CSI

2021-11-13

e1000e-3.8.4.tar.gz.zip

英特尔 I219 网卡驱动程序

2021-09-27

从设备树构建kernel驱动platform_device的流程.pdf

《Linux与SoC》公众号上下载的资料,写的很好,大家可以参考

2021-07-31

devicetree-specification-v0.3.pdf

设备树规范英文版

2021-07-20

WLAN国家码与信道顺从表.xlsx

各个国家WIFI信道划分汇总

2021-06-25

基于Linux实现简单的队列

基于Linux实现简单的队列功能。本代码实现了阻塞和非阻塞方式出入队列。同时是线程安全的。如果队列满,在入队时可以指定最大超时。如果队列空,可以在出队时指定最大超时。

2021-05-15

linux下ble开发

1.linux 低功耗蓝牙ble介绍 2.linux蓝牙协议栈架构,bluez5的介绍 3.GAP (Scanning, Advertising, Pairing etc) 4.GATT

2021-04-16

Bluetooth on Modern Linux_0.pdf

介绍Linux蓝牙协议栈架构,包括Linux内核,Bluez5(bluetoothd,obexd),D-BUS接口,BLE的支持

2021-04-16

uart_server.tar.gz

基于C语言的BLUEZ编程。BLUEZ应用编程非常复杂,bluez对外的接口的DBUS接口,不是普通的c语言函数。所以看懂我写的这个程序,必须先学会DBUS编程。我使用的bluez版本是v5.54。

2021-04-15

单片机高级编程.pdf

单片机的状态机介绍,之前的博文比较乱码,这个文档是不乱码的。 本文档介绍如何去掉程序的延时,提高程序的并发性。

2020-04-23

新一代Lora芯片SX126x系列传输时间计算

新一代Lora芯片SX1261,sx1262,sx1268传输时间计算,方便计算传播延时。官网最新的资源工具包

2020-03-07

新一代Lora芯片sx126x的驱动源码

新一代Lora芯片的驱动源码,适用于SX1261,sx1262,sx1268.与上一代的sx127x系列框架不同。

2020-03-07

华为内部程序设计培训

华为内部资料,针对c语言程序设计规范,做了全面的阐述

2013-08-30

unix环境高级编程

.chm格式的英文版unix高级环境编程,方便实用,介绍全面

2013-08-30

空空如也

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

TA关注的人

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