C语言与应用开发
C语言与应用开发相关案例总结
悟空胆好小
可以收藏并关注我获取最新分享,嵌入式软件专家,专注分享嵌入式软硬件、AIoT(物联网+人工智能)、通信技术、半导体等相关内容。
展开
-
linux U盘/SD卡 热插拔以及自动挂载完整机制
/mnt/nand # mmc_host mmc0: Bus speed (slot 0) = 100000000Hz (slot req 50000000Hz, actual 50000000HZ div = 1)mmc0: new high speed SDHC card at address 1234mmcblk0: mmc0:1234 SA04G 3.68 GiB mmcblk0: p1/mnt/nand # ls -l /dev/m*crw-rw---- 1 root原创 2022-03-08 22:17:13 · 1550 阅读 · 0 评论 -
UBoot 下命令 sf write 参数进制选择
更新程序:U-Boot> tftp 0xa00000 zImage.dtbTFTP from server 172.7.6.53; our IP address is 172.7.6.189Filename 'zImage.dtb'.Load address: 0xa00000Loading: ################################################################# ########################原创 2022-03-08 22:09:00 · 735 阅读 · 0 评论 -
virtubox+Ubuntu com1 ttyS0 com8 ttyUSB0配置
一.com1配置二.com8 ttyUSB0配置simonbear@simonbear-VirtualBox:~$ dmesg | grep ttyUSB0[ 16.304071] usb 2-2: pl2303 converter now attached to ttyUSB0[ 613.411371] pl2303 ttyUSB0: pl2303_set_control_lines - failed: -19[ 613.415927] pl2303 ttyUSB0: pl2303原创 2022-03-08 22:06:13 · 450 阅读 · 0 评论 -
uboot 开发之其常见命令
U-Boot 2009.06-2.0.6-svn50281 (10鏈02 2015 - 20:35:08)=== U-Boot DDR Reserved Area === !! Please do not write any data to these locations. !! TEXT section : 0x00002000 -> 0x00019b7c BSS section : 0x00019b7c -> 0x0001db64 MALLOC Area : 0原创 2022-03-08 22:03:49 · 412 阅读 · 0 评论 -
linux env /printenv/fw_printenv区别
fw_printenv(自己也可定义): 可以打印出在uboot中设置的环境变量的值。env/printenv 都是打印当系统环境变量。不同的是printenv不加参数和env一样,printenv可以打印指定名称的环境变量实现:simonbear@simonbear-VirtualBox:~/fisheye/rootfs/vtcs_rootfs/packages/busybox-1.22.1$ find . -name "env.c" -print./coreutils/env.csimo.原创 2022-03-08 22:02:05 · 519 阅读 · 0 评论 -
MCU 选型判断依据总结
一.工程师选型的局限性1)硬件工程师对成本敏感,但缺少软件概念,大部分处于连线水平,无法知晓外设链接与MCU内部资源的配合;缺少产品软件所需要的RAM和FLASH信息,硬件工程师根据经验或者其他类似项目使用过该型号的MCU,主观选择好已经用过的MCU,但是项目变化,原先配置的MCU FLASH空间可能不足,内存可能不足会导致项目风险大大增加;2)软件工程师不熟悉硬件外部电路原理,对成本不敏感,需要更理解底层的工程师如驱动工程师来解决。喜欢大FALSH 大RAM 给编程预留足够余地。如何判断是否原创 2022-03-08 21:58:33 · 7682 阅读 · 2 评论 -
SOC OV788开发:10.uart 中断接收 以及usb启动模式
SOC OV788开发:10.uart 中断接收 以及usb启动模式IRQ_HANDLER_DECLARE_STARTIRQ_MAP(UART, uart_irq_handler);#if defined(CONFIG_WIFIMODULE_BRCM4334X) || defined(CONFIG_WIFIMODULE_RTL8195A)extern void app_scio_irq_handler_1(void);#ifdef CONFIG_WIFIMODULE_USE_SCIO1IRQ_M原创 2022-02-22 23:03:44 · 149 阅读 · 0 评论 -
SOC OV788开发:9.分区信息打印
SOC OV788开发:9.分区信息打印#include "libsif.h"extern t_libsif_cfg * sf_libsif_cfg; void func_libsif_cfg_test(void) { static t_libsif_cfg libsif_cfg_test; /*typedef struct{ u32 base_addr; ///< sif control base address, sif原创 2022-02-22 23:00:09 · 208 阅读 · 0 评论 -
getopt_long函数的典型使用
getopt_long函数的典型使用在实际开发中 需要自行开发一些测试程序。参考glibc 等LINUX 标准命令实现即可。int main(int argc, char const *argv[]){ int ret = 0,i; char buffer[1024*2]; int len_read,len_write,offset,chunk_bytes; fd_set rfds,wfds; int io_select = -1; char file_name[100]={0,}; s原创 2022-02-13 08:47:05 · 246 阅读 · 0 评论 -
Linux SOC 系统性能快速测试
**Linux SOC 系统性能快速测试**Linux SOC 系统性能测试可以采用一些通用的benchmark,但是这些也存在局限性。SOC性能不能单看CPU 频率,DDR频率,还需要考虑总线效率,这就需要综合测试。使用内存申请 并拷贝等操作 即可模拟上述具体过程。 memteste也是类似的原理。#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <errno.h&..原创 2022-02-13 08:42:51 · 520 阅读 · 0 评论 -
循环队列的相关设计实现参考1
循环队列的相关设计实现参考1#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h> #define QueueSize 200 typedef char datatype; //队列的数据元素 typedef struct { int front; int rear; int coun原创 2022-02-13 08:36:47 · 114 阅读 · 0 评论 -
is_power_of_2 判断是否是2 的倍数
bool is_power_of_2(int n) { int i,j; if(n<=0) return false; if(n==1) return true; while(n!=1) { if(n%2==0) n=n/2; else return false; } return true;}原创 2022-02-13 08:11:02 · 996 阅读 · 1 评论 -
C语言sscanf 字符串的MAC地址 转为 16进制数据
C语言sscanf字符串的MAC地址 转为 16进制数据 ,相比字符串分割获取的方式简单很多。值得学习char macStr[20] = {"12:34:56:78:9A:97"};void main_test(){ char macAddr[6]; sscanf(macStr, "%hhX:%hhX:%hhX:%hhX:%hhX:%hhX", &macAddr[0], \ &macAddr[1], &a原创 2022-02-10 23:21:09 · 2166 阅读 · 0 评论 -
Linux 读取IP文件解析信息 获取IP地址
#include <stdio.h>//int main()int ipstrbuf[25]={0};char* main_ip_des(char*path)//char* main(char*path){memset(ipstrbuf,0,sizeof(ipstrbuf));FILE *fp=fopen("./ip.txt", "r");int i;char str[100]={0}; //足够容纳最大长度的一行!if (fp==NULL ) return -1;f原创 2022-01-27 17:33:07 · 2844 阅读 · 0 评论 -
Linux获取IP地址信息的代码
```c#include <netdb.h>#include <stdio.h> #include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <netinet/in.h>#include <sys/socket.h>typedef enum { false, true}b.原创 2022-01-27 14:23:02 · 235 阅读 · 0 评论 -
GDB 使用命令 较好文章
http://www.ithov.com/linux/100590.shtmlGDB 使用命令 较好文章原创 2013-08-02 15:35:13 · 650 阅读 · 0 评论 -
目标文件中函数 变量大小按顺序排列命令
nm -Sn --size-sort ]csky-elf-nm -Sn --size-sort libappcommon.a >hh.txtapp_common_table_nit.o:00000014 00000001 b app_nit_start_flag00000004 00000004 b app_table_nit_parse_descripto原创 2013-09-18 13:33:00 · 781 阅读 · 0 评论 -
如何判断.a .0文件的架构 编译器工具
链接。A 的时候 有这个。A ,但是一直提示找不到,WHY??/[XX@ lib]ar -x libbyca.a [XX@ lib]lsbyca_card.o byca.o byca_task_ecmpid.o des.o sub.oBYCAca_stb.o bycapair.o byca_task_emm原创 2013-09-25 10:59:17 · 1301 阅读 · 0 评论 -
make报错:"/usr/bin/ld: cannot find -lXXX"
# make。。。/usr/bin/ld: cannot find -lcreate_filecollect2: ld returned 1 exit status问题原因:该问题一般是由于ld在进行库的连接时找不到库文件所致:解决方案: 出现该问题时,去lib目录下查找相关的库文件,基本如下:[root@loc原创 2013-07-04 15:51:21 · 991 阅读 · 0 评论 -
-funsigned-char -fno-signed-char -fsigned-char -fno-unsigned-char
-funsigned-char -fno-signed-char -fsigned-char -fno-unsigned-char 这四个参数是对char类型进行设置,决定将char类型设置成unsigned char(前两个参 数)或者 signed char(后两个参数) 如何确认编译器使用的char是unsigned char 还是signed原创 2013-07-04 16:49:00 · 2899 阅读 · 0 评论 -
用 echo 管道命令给sudo自动输入密码
用 echo 管道命令给sudo自动输入密码 这种方式密码会明文显示,密码不安全,仅作为学习练习用 1、echo psw|sudo -S cmd 1)有时候使用脚本运行管理员命令时,希望能够自动运行,不被sudo 密码中断; 2)这时候可以使用 echo 密码|sudo -S 命令 的形式来自动输入密码; 3)例如关机脚本 myhalt,保存后“右击-属性-权限-允原创 2013-10-23 09:05:58 · 14656 阅读 · 1 评论 -
e报错:"/usr/bin/ld: cannot find -lXXX" 下篇
上篇文章是通过 拷贝.A 文件到GCC默认的搜索目录下 /USR/LIB解决问题的。主要原因在于未指定LIB的目录,导致LD链接搜索不到,好 既然这样我们就指定 .A的目录 参数-L派上用场了,不是-l哦 http://www.360doc.com/content/10/0619/14/1795182_33985297.shtml 4。-l参数和-L参数-l参数就是用来原创 2013-07-04 16:31:19 · 897 阅读 · 0 评论 -
如何确定域在结构中的字节偏移
ANSI C 在 中定义了 offsetof() 宏, 用 offsetof(struct s, f)可以计算出域 f 在结构 s 中的偏移量。如果出于某种原因, 你需要自己实现这个功能, 可以使用下边这样的代码:#define offsetof(type, f) ((size_t) \((char *)&((type *)0)->f - (char *)(type *)0))原创 2013-06-08 14:22:54 · 752 阅读 · 1 评论 -
fleible array member zero array membe
结构体最后使用0或1的长度数组的原因,主要是为了方便的管理内存缓冲区,如果你直接使用指针而不使用数组,那么,你在分配内存缓冲区时,就必须分配结构体一次,然后再分配结构体内的指针一次,(而此时分配的内存已经与结构体的内存不连续了,所以要分别管理即申请和释放)而如果使用数组,那么只需要一次就可以全部分配出来,(见下面的例子),反过来,释放时也是一样,使用数组,一次释放,使用指针,得先释放结构体内的指针原创 2013-06-08 14:11:38 · 890 阅读 · 0 评论 -
BMP RGB565
http://atlc.sourceforge.net/bmp.html#_toc381201084 when this field is equal to 16.the bitmap has a maximum of 2^16 colors. if the compression field of the bitmap file is set to bi_rgb原创 2013-12-03 10:10:37 · 1304 阅读 · 0 评论 -
ini文件解析器 源代码阅读以及测试例子
#include #include #include #include #include "iniparser.h" int main(){ dictionary * d ; /* If no size was specified, allocate space for DICTMINSZ原创 2014-07-17 18:12:36 · 888 阅读 · 0 评论 -
HASH 表用于字符串的查找,可见非常迅速
#include #include #include #include #include "iniparser.h" char *str[]={ "djjjdkk", "ww334554**2", "djjjdkk", "w874w334554**2", "djjjdkk",原创 2014-07-17 18:20:54 · 894 阅读 · 0 评论 -
如何根据IP自动获取当地的天气预报信息
针对这个目前 手机APP,hen duo原创 2014-08-20 11:17:09 · 1999 阅读 · 0 评论 -
单播SNTP客户端
一、功能实现以NTP服务器为基准,同步网内计算机或嵌入式设备的时间。 二、协议原理协议:客户端向NTP服务器发送请求数据包,NTP服务器回应一个数据包。分别记录客户端发送请求包时的时刻t1和接收到回应包的时刻t4,服务器回应的数据包内包含了服务器接收到请求包的时刻t2和服务器发送回应包的时刻t3。t4-t1表示整个消息传递过程所需要的时间;t原创 2015-04-15 09:32:53 · 999 阅读 · 0 评论 -
__PRETTY_FUNCTION_ 以及C++中调用C
linux@ubuntu:~/linux_c$ cat example.c #include int main(void){printf("hi main=%s %s\n",__FUNCTION__,__PRETTY_FUNCTION__);printf("hi main=%s %s\n",__FUNCTION__,__func__);return 0;原创 2015-09-29 11:28:39 · 3434 阅读 · 0 评论 -
《Understanding and Using C Pointers》要点先睹为快 系统总结
http://tonybai.com/2013/05/28/understanding-and-using-c-pointers-keypoint-preview/如果你问十个C程序员:你觉得C语言的核心是什么?这十个程序员都会回答:指针。指针具备成为C语言核心的两个关键要素:强大与争议。* 指针的强大源自于其天生与机器内存模型的适配。使用指针让代码紧凑,并可获得仅次于汇编代码原创 2013-06-09 10:12:27 · 1384 阅读 · 0 评论