开发杂记

deasserted(de-asserted)
在阅读芯片数据手册的时候经常会遇到asserted和deasserted这样的词汇。
asserted的意思就是把信号变为active(可以理解为有效),根据系统要求不同,该有效电平可以是高电平(即高有效),也可以是低电平(即低有效)。
与前者相反,deasserted的意思就是解除active状态,就是信号变为非active状态,可以是高也可以是低。
pmu要先编程设置后,才可以进行电压输出。先量电压电源是否正常,再看代码。
0欧姆电阻的作用: 
1.在电路中没有任何功能,只是在PCB上为了调试方便或兼容设 计等原因。 
2.可以做跳线用,如果某段线路不用,直接不贴该电阻即可(不影响外观) 
3.在匹配电路参数不确定的时候,以0欧姆代替,实际调试的时候,确定参数,再以具体数值的元件代替。
 4.想测某部分电路的耗电流的时候,可以去掉0ohm电阻,接上电流表,这样方便测耗电流。
 5.在布线时,如果实在布不过去了,也可以加一个0欧的电阻 
6.在高频信号下,充当电感或电容。(与外部电路特性有关)电感用,主要是解决EMC问题。如地与地,电源和IC Pin间 
7.单点接地(指保护接地、工作接地、直流接地在设备上相互分开,各自成为独立系统。) 
8.熔丝作用 
9.拟地和数字地单点接地 
10.……
******
linux 模块定义
module_init()  module_exit()  module_license(GPL)
lsmod 可以获得系统中所有模块及其之间的关系。
insmod

modinfo xxx.ko 获得相关ko的信息。
内核模块参数,参数导出, linux内核模块加载函数一般以__init标识声明。
linux内核中,错误编码是个负值,在<linux/errno.h>中定义,包含-ENODEV,-ENOMEM,返回相应的错误编码,用户程序可以用perror将其转换为有意义的错误信息。
linux中所有__init标识的函数在link的时候都放在.init.text这个区段,__exit 是.exit.text区段。

模块参数
可以使用module_param(参数名,参数类型,参数读写权限),为模块定义一个参数,例如:
static int num = 4000
module_param(num,int,S_IRUGO);

insmode/modprobe 模块名 参数名=参数值,如果不传递 使用模块内定义的default值。
模块被加载后,sys/module目录将出现此模块命名的目录,当参数读写权限为0,表示此参数不存在sysfs文件系统下的对应文件节点,如果此模块存在读写权限不为零的命令行参数,此模块目录下还将出现parameters目录,包含以参数命名的文件节点,这些文件的权限值就是传入参数的读写权限,文件的内容是参数的值。
module_param_array定义数组参数。

linux2.6的/proc/kallsyms对应着内核符号表,记录符号及其内存地址,使用以下宏导出符号到内核符号表
EXPORT_SYMBOL(符号名)
EXPORT_SYMBOL_GPL(符号名)
导出的符号将可以被其他模块使用,使用前声明一下即可,
linux中使用MODULE_AUTHOR,MODULE_DESCRIPTION,MODULE_VERSION,MODULE_DEVICE_TABLE,MODULE_ALIAS分别声明模块的作者,描述,版本,设备表和别名。
MODULE_DEVICE_TABLE表明该驱动模块所支持的设备列表,如USB,pci驱动。

KVERS=$(shell uname -r)
EXTRA_CFLAGS=-g -O0可以得到包含调试信息的ko模块。
芯片阅读方法:芯片结构图,内存映射,集成的控制器功能,操作流程,寄存器的配置方法,电气数据,机械数据(对于硬件工程师重要),

hardware$ mmm  /gps/xxx目录名,只编译xxx目录内的东西。
Android.mk中的宏定义,一般在device/平台名字的,类似board定义脚本中有定义。定义形式大概为:USE_ZD_GPS_LOC
make -f make_diy  通过-f选项指定哪个文件作为makefile。
IDE 自动完成makefile的创建工作。
c cpp h ----编译----》.o 中间文件 ----链接-----》.exe     
                                         |                                            
                                           ↘ .o 中间文件打包成库文件.so  .lib  .a(archive file)
who change ,compile who
.h 变化了,所有引用过它的.c都要重编。
.h也是依赖。
注意转义字符------------------"   \  ",的使用
makefile中的命令必须以Tab键开始。
 

Overhead :开销,75/m,显示屏的问题-显示屏的插排问题,bt –wifi电源管理锁,小模块的驱动调试,ublox的so hal驱动。

Over-current protection 过流保护。

$time xxx.sh可以计算xxx.sh脚本的执行时间。

      errno 是记录系统的最后一次 错误代码 。代码是一个int型的值,在errno.h中定义
错误代码 errno调试程序重要方法
 
if (sysXXXcall() == -1) {
printf(" sysXXXcall() failed\n");
if (errno == ...) { ... }
}
这样的例子并不能得到somecall这个函数的运行所产生的 错误代码,因为很可能是printf这个函数产生的。
if (s sysXXXcall() == -1) {
int errsv = errno;
printf(" sysXXXcall() failed\n");
if (errsv == ...) { ... }
这样才能真正得到运行 sysXXXcall()函数所带来的错误代码。
}
注意:只有当一个库函数失败时,errno才会被设置。 当函数成功运行时,errno的值不会被修改。这意味着我们不能通过测试errno的值来判断是否有错误存在。反之,只有当被调用的函数提示有错误发生时检查errno的值才有意义。
查看错误代码errno是调试程序的一个重要方法。 当linux C api函数 发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。

                    



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值