- 博客(423)
- 资源 (44)
- 收藏
- 关注

原创 gdb
调试带参数程序gdb xxx进入调试界面后 set args 可指定运行时参数 (如set args -l) show args 可查看设置好的运行参数 path <dir> 可设定程序的运行路径 show paths 查看程序的运行路径 set env varname [=value] 设置环境变量 show env 查看环境变量...
2018-08-22 09:35:25
508

原创 git
git commitgit commit -s 提交的信息中带有signed-off-by: git loggit log filename/dir 查看某个文件/目录的历史git log –stat 显示当前commit在上一次commit基础上修改了哪些文件及行数等信息。git log -p 显示当前commit在上一次commit基础上修改的文件的内容git log –pretty=o
2017-07-15 11:16:41
533

原创 gcc
gcc生成静态链接库gcc -c file1.c gcc -c file2.c ar crv my_library.a file1.o file2.o 注意,用gcc链接静态库的时候,-l要放在xxx.c后面 -I -l -L 系统头文件路径是:/usr/include,如果引用的头文件不在系统路径下,那么需要用-Ipath来指明头文件的目录。 静态链接库的系统路径是:/lib, ...
2016-01-04 20:59:44
968

原创 vim+ctags+cscope安装与使用总结(不断补充中)
ctags1、安装ctags1) sudo apt-get install ctags 或者2) 在http://ctags.sourceforge.net/ 下载源代码包之后,解压缩生成源代码目录进入源代码目录执行./configure & make & make install2、vim中ctags简单使用详细的使用ctags用法,在vim...
2015-03-10 22:02:13
26037

原创 C语言小知识点总结
宏1、可变参数宏...和__VA_ARGS___VA_ARGS_是一个可变参数的宏,是新的c99规范中新增的,目前似乎只有gcc支持(VC6.0不支持)宏定义中参数列表的最后一个参数为省略号(也就是3个点),这样预定义宏__VA_ARGS_就可以用在替换部分中,替换省略号所代表的字符串。比如define PR(...) printf(__VA_ARGS_)int main()...
2015-03-09 17:35:34
1246
原创 sysctl
sysctl命令用于运行时配置内核参数,这些参数位于/proc/sys/目录,可以使用sysctl修改系统变量,也可以通过编辑/etc/sysctl.conf文件来修改系统变量。sysctl(选项)(参数)选项-n:打印值时不打印关键字;-e:忽略未知关键字错误;-N:仅打印名称;-w:当改变sysctl设置时使用此项;-p:从配置文件“/etc/sysctl.conf”加载内核参...
2020-03-28 22:22:10
926
原创 CONFIG_KALLSYMS_ALL
内核配置在2.6内核中,为了更好地调试内核,引入了kallsyms。kallsyms抽取了内核用到的所有函数地址(全局的、静态的)和非栈数据变量地址,生成一个数据块,作为只读数据链接进kernel image,相当于内核中存了一个System.map。CONFIG_KALLSYMS=y 符号表中包含所有的函数CONFIG_KALLSYMS_ALL=y 符号表中包括所有的变量(包括没有用E...
2020-01-24 16:35:05
3902
原创 DMA(四) - DMA_API_DEBUG
DMA_API_DEBUG为了debug驱动程序及发现使用DMA-API时的bug,检测代码可以编译到kernel中,它们可以告诉开发 者那些违规行为。如果你的体系结构支持,你可以选择编译选项“Enable debugging of DMA-API usage”,使能这个选项会影响系统性能,所以请勿在产品内核中加入该选项。...
2020-01-23 10:34:47
899
转载 结构体的最后定义一个大小为0 的数组
有很多结构体的最后都定义了一个大小为0 的数组,如drivers/oprofile/cpu_buffer.h中struct op_sample { unsigned long eip; unsigned long event; unsigned long data[0];};结构体最后的长度为0的数组是GCC中广泛使用技巧,常用来构成可变长缓...
2020-01-22 20:53:22
2638
原创 链接脚本
void foo(void) attribute((section(".in_name")));void bar(void) attribute((section(".in_name")));.out_name{*(.in_name)}这样就把foor(), bar()这两个函数给放在了最终elf文件里的.out_name这个section。从宏观上来看下这个链接脚本SECTI...
2020-01-21 18:02:58
352
原创 linux自旋锁spin_lock
spin_lock与spin_lock_irq与spin_lock_irqsavespin_lock与spin_lock_irq两者只有一个差别:是否调用local_irq_disable()函数, 即是否禁止本地中断。spin_lock比spin_lock_irq速度快,但是它并不是任何情况下都是安全的。在任何情况下使用spin_lock_irq都是安全的。因为它既禁止本地中断,又禁止内核抢...
2019-12-28 14:56:47
448
原创 systemctl
systemctl是一个systemd工具,Systemd是一个系统管理守护进程、工具和库的集合systemd作为父守护进程运行(PID = 1)查看systemd版本systemd --version查看systemd和systemctl的二进制文件和库的安装位置whereis systemdwhereis systemctl分析systemd启动过程systemd-analyz...
2019-11-23 12:43:14
559
原创 内核current指针
current指针current其实一个struct task_struct指针,指向当前进程struct task_struct *task又是struct thread_info的一个成员变量。thread_info可以从sp寄存器得到//linux-imx/include/asm-generic/current.h#define get_current() (current_thr...
2019-11-23 11:18:11
2711
3
原创 字节对齐
字节对齐单位a. linux 32位默认4字节对齐,64位默认8字节对齐b. 结构体最大成员(基本数据类型)c. 预编译指令 #pragma pack(n)手动设置,n-只能填1 2 4 8 16上面三者取最小的,就是实际对齐单位结构体的整体大小必须为实际对齐单位的整数倍#include <stdio.h>int main(){ //8 bytes ...
2019-11-10 19:03:34
218
原创 UAC
Bus 003 Device 019: ID 0d8c:0132 C-Media Electronics, Inc. Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 (Defined ...
2019-08-30 14:07:05
594
原创 MFC动态链接库创建与调用
在MFC中生成DLL在头文件中extern "C" _declspec(dllexport) int Min1(int x,int y,int z);在实现文件中 /*找出x,y,z中的最小整数*/extern "C" __declspec(dllexport) int Min1(int x,int y,int z){ if ((x<=y) & (x<=z)) r...
2019-07-14 11:28:42
732
原创 /proc/interrupts
/proc/interrupts中的字段依次是逻辑中断号、中断在各CPU上发生的次数,中断所属父设备名称、硬件中断号、中断触发方式(电平或边沿)、中断名称/proc/interrupts的具体实现查看代码kernel/irq/proc.c中函数show_interrupts...
2019-06-10 11:02:55
1557
原创 蓝牙
Beaconibeacon是由苹果公司在2013年推出的,其初衷是解决室内定位的问题。利用低功耗的BLE多点定位来解决室内(大型商场、停车场、医院等)定位的问题也就理所应当了。ibeacon基于BLE的广播,而BLE广播限定数据长度不能超过31 Bytes。ibeacon将广播包的长度固定为30 Bytes。这30个Bytes分为两个AD structure(这是BLE广播数据的一种组织形式...
2019-04-15 15:14:00
1196
转载 IEC60958和IEC61937
BMC编码IEC 60958在传输数据时使用双相符号编码(Biphase Mark Code),简称BMC,属于一种相位调制(phase modulation)的编码方法,是将时钟讯号和数据讯号混合在一起传输的编码方法。下图是BMC的示意图:在BMC编码中,时钟信号的频率是数据传输bitrate的两倍。当数据信号是高电平1时,BMC跳变。当数据信号是低电平0时,BMC不跳变。然后两个数据信号...
2019-03-29 11:08:02
9841
1
转载 smbus与i2c区别
The I²C bus and the smbus are popular 2-wire buses that are essentially compatible with each other.运行频率先以运作频率来说,I2C此方面相当宽裕,最低频可至0Hz(直流状态,等於时间暂停),高可至100kHz(Standard Mode)、400kHz(Fast Mode)、乃至3.4MHz(H...
2019-02-16 15:20:17
7391
1
原创 eMMC mmcblk0boot0
mmcblk0boot0 is a hardware-defined partition in the eMMC distinct from the mmcblk0pN partitions that are defined by the MBR partition table in the “user area”. U-Boot (if you’re using a version that s...
2019-02-16 15:06:25
718793
转载 tiny_tty驱动
LDD3这本书的最后一章TTY驱动中有介绍了一个简单的tty驱动的sample /* * Tiny TTY driver * * Copyright (C) 2002-2004 Greg Kroah-Hartman (greg@kroah.com) * * This program is free software; you can ...
2019-01-25 16:22:20
1542
原创 linux进程的interruptible sleep状态和uninterruptible sleep状态
linux进程有两种sleep状态,一种是interruptible sleep,处在这种状态的进程是可以接收外部信号的,cat /proc/xxx/statusName: sysmgtState: S (sleeping)另一种是uninterruptible sleep,处在这种状态的进程不接收外来的任何信号,所以用kill -9也杀不掉这种进程。cat /proc/xxx/sta...
2019-01-25 10:11:20
5257
转载 RZ,NRZ,NRZI、曼彻斯特编码
在数字电路中,组成一连串信息的基元就是0和1,无论是在CPU、DSP、MCU甚至是个数字计数器中,数字电路在其中能够处理的信息也只有0和1,而对于任何外界的信息,计算机都能通过两个量来描述,那就是0和1。而对于数字通信来说,想要用0和1来传递你想传达的信息,则必须要通过一种特殊的约定来进行同步,这种约定就是编码。两台设备要想进行有线通信,最终都是将想要传达的信息转变成一串比特流,进而在传输线上进行...
2019-01-24 15:13:51
6955
1
转载 AMBA总线
AMBA 1:只有ASB和APB协议;AMBA 2:引入AHB协议用于高速数据传输;AMBA 3:为适应高吞吐量传输和调试引入AXI和ATB,增加高级可扩展接口,而AHB协议缩减为AHB-lite,APB协议增加了PREADY和PSLVERR,ASB由于设计复杂而不再使用;AMBA 4:AXI得到了增强,引入QOS和long burst的支持,根据应用不同可选AXI4,AXI4-lite,A...
2019-01-11 10:59:28
2573
原创 PCI子系统(三)- PCI设备驱动
这里拿linux/drivers/leds/leds-ss4200.c来做模板参考学习注册struct pci_driverstatic struct pci_driver nas_gpio_pci_driver = { .name = KBUILD_MODNAME, .id_table = ich7_lpc_pci_id, .probe = ...
2019-01-07 10:57:03
1629
3
原创 PCI子系统(二)- pci controller driver
访问PCIe配置空间通过8位,16位,32位的数据传输访问配置空间,where是从配置空间起始位置计算的字节偏移量。static inline int pci_read_config_byte(const struct pci_dev *dev, int where, u8 *val)static inline int pci_read_config_word(const struct pc...
2019-01-06 16:36:05
1407
原创 PCI子系统(一) - 协议
协议来自PCI Express Base Specification Revision 3.07.5 PCI compatible configuration register这是type 0型的头部结构,一般用于PCI设备,还有个type 1型的头部结构,用于PCI桥。7.7 MSI and MSI-X Capability structuresMSI(Message Signale...
2019-01-06 16:22:12
1052
转载 HDMI - 概念初识
2HDMI接口HDMI(High Definition Multimedia Interface)传输接口,可以实现数字音频、视屏格式的高清传输。目前已经支持高达4K,甚至8K分辨率的图像传输。HDMI视屏和音频信号传输通道采用了的TMDS(Time Minimized Differential Signal)最小化差分信号传输。是一种差分信号传输方式。以上是HDMI的信号框图,对应到实际的电...
2019-01-03 14:55:32
1413
转载 device wakeup system
通过设备可以将系统唤醒,比如gpio电源按键能够将系统唤醒。device wakeup相关的API /* include/linux/pm_wakeup.h */ device_init_wakeup(struct device *dev, bool val); // 初始化设备能不能唤醒系统,并且使用这个功能 device_may_wakeup // 判断设备设备能不能够别唤醒,并且...
2018-12-26 10:14:23
665
转载 win10 turn on/off usb device selective suspend
Keyboard or mouse not working after your PC wake up from sleep? When you’re charging your phone through an USB port, putting your PC into sleep mode will turn off the power to USB ports, and your phon...
2018-12-20 19:03:47
4499
原创 PCM与DSD
PCM调制方式脉冲编码调制(Pulse Code Modulation)脉冲编码调制对模拟信号先采样,再对采样幅值量化,编码编码方式不编码DPCM(Differential Pulse Code Modulation) 差分脉冲编码调制APCM(Adaptive Pulse Code Modulation) 自适应脉冲编码调制ADPCM(Adaptive Differential...
2018-12-03 18:22:51
5448
转载 ubuntu 64位 安装 ia32-libs
sudo apt-get install g++-multilibsudo apt-get install libncurses5:i386sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386作者:hackerwin7来源:优快云原文:https:...
2018-11-19 15:18:47
2564
5
转载 Android设置软件开机自启动
背景知识:当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为 android.intent.action.BOOT_COMPLETED。只要在程序中“捕捉”到这个消息,再启动之即可。首先在清单文件的manifest的节点下配置权限<?xml version="1.0" encoding="utf-8"?><...
2018-11-19 14:56:55
5864
原创 audio_policy_configure.xml
关于audio_policy_configuration.xml文件的说明&lt;!-- Modules section: There is one section per audio HW module present on the platform. Each module section will contains two mandatory tags fo...
2018-11-18 15:12:17
1056
原创 linux display子系统的代码分层架构
这里display子系统的是典型的驱动分层模型,上层是framebuffer的操作,涉及到的核心的结构体是struct fb_info,下层是display controller的操作,涉及到的核心的结构体是struct mxcdrv_driver...
2018-10-11 15:01:50
1338
原创 进程,线程,内核设置cpu亲和性
进程与cpu绑定sched_setaffinity可以将某个进程绑定到一个特定的CPU。SCHED_SETAFFINITY(2) Linux Programmer's Manual ...
2018-09-18 16:50:19
3808
原创 nfs文件系统配置
no_root_squash与root_squash区别no_root_squash:当登录NFS主机使用共享目录的使用者是root时,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用! root_squash;如果登录NFS主机使用共享目录的使用者是root,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nob...
2018-08-22 10:59:09
341
转载 情绪管理
当向听众解释压力管理的时候,讲师拿起一杯水问道:这杯水有多重?20克到500克众说纷纭。 讲师回答说:实际有多重并不重要,这要看我拿着它的时间。一分钟,没有问题。如果一个小时呢,我的右臂就会疼痛。再进一步,一天,你应该给我叫救护车了。当然每种情况下杯子的重量是相同的,但是我拿的越久,它就显得越沉。 他继续说道:这就像压力管理,如果总是怀揣沉重的负担,随着压力越来越大,迟早我们会崩溃掉。 ...
2018-08-21 16:51:21
425
嵌入式系统开发之道笔记
2015-05-17
alsa-utils-1.0.25_alsa-lib-1.0.25
2015-05-11
pthread API的一些用法
2015-02-15
MJPEG压缩与解压缩
2013-12-13
MassStorageClass协议文档
2013-09-28
QT连续显示多幅图片看起来像动画
2012-12-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人