- 博客(17)
- 资源 (4)
- 收藏
- 关注
原创 5 新的关键字
且在源码中无法快速定位所有使用强制类型转换的语句,出现问题时难以定位。C语言中所有的全局标识符共享同一个作用域,那么项目很大时,标识符之间就有可能发生冲突。上面程序中运用到了第二节的知识点:const 常量只有定义的别名拥有只读属性,不会影响到正名。回想C语言中,动态内存是怎么分配的?在程序设计理论中,强制类型转换也是不被推荐的,与goto语句一样,尽量避免。C++通过new关键字进行动态内存申请,动态内存申请是基于类型进行的。默认情况下,可以直接使用默认命名空间中所有的标识符。C方式的强制类型转换。
2023-11-14 00:51:57
191
原创 3 函数的升级-上
c++中可以通过inline关键字声明内联函数inline关键字只是一种请求,编译器不一定运行这种请求内联函数省去了普通函数调用时压栈、跳转、返回的操作c++中在声明函数的时候指定参数的默认值c++可以声明占位符参数,占位符参数一般用于程序扩展和兼容c语言函数调用的不规范写法。
2023-11-05 00:42:55
183
原创 2 C++中的引用
上节说到,变量名实际上是一段连续存储空间的别名。很显然我们可以将其命名为其它名字,就像我们有乳名、小名一样。C++引入了引用的概念。上面程序中,int& new_name = original;用original别名叫new_name,当new_name赋值后,对于的存储空间的值也会变化,故original 的值和new_name值一样。
2023-09-24 22:09:21
137
原创 C到C++的升级
C++中更强调语言的实用性,所有的变量都可以在需要使用时定义。我们都知道C语言都必须要在作用域之前的位置定义,否则会报错。引申概念,什么是作用域?通常我们在写代码的时候,所用到的名字并不是有效/可用的,限定变量或者函数的名字的可用性的代码范围就叫作用域。全局变量作用域就是整个文件,加了extern声明之后作用域就可以为整个工程空间使用。局部变量的作用域就是本函数内,用完即丢弃。int c = 0;i < 10;i++) //在C语言中,变量定义需要在函数开始,不能在使用的地方定义。
2023-09-03 20:34:30
1599
2
原创 为什么要学习C++
以安卓系统为例,C语言开发只是占其中的一部分,HAL可以用C/C++编写,为了方便移植和开发,大部分HAL采用C++编写。当面向过程的方法论暴露的缺陷越来越多的时候,业界开始考虑在工程项目中引入面向对象的设计方法,而第一个需要解决的问题:高效的面向对象语言,并且能够兼容已有的C代码。对于一个架构师而言,掌握各种语言的优势并合理运用到系统中,由此简化系统的开发,是架构生涯的第一步。操作系统的修改和驱动程序开发在现代软件产品中占据的比重越来越小。将现实世界中的事物直接映射到程序中,可直接满足用户需求。
2023-09-02 19:53:08
1938
原创 uboot-C语言环境初始化
1-栈初始化栈是一种具有后进先出性质的数据组织方式,也就是说,后存放的先取出,先存放的后取出。根据sp指针指向的位置,栈可以分为满栈和空栈。满栈:当堆栈指针sp总是指向最后压入堆栈的数据。空栈:当堆栈指针sp总是指向下一个将要放入数据的空位置。ARM采用满栈! 根据SP指针移动方向,栈可以分为升栈和降栈。升栈:随着数据的入栈,SP指针从低地址->高地址移动。降栈
2017-08-10 23:04:34
963
原创 IMX6q ft5x0x_ts触摸芯片分析
Imx6使用的触摸屏控制芯片是ft5x06系列的,对应的文件为:ft5x06_ts.c。Ft5x06_ts驱动涉及的内容如下:1. I2C驱动框架。2. 中断子系统,中断分层思想。3. Workqueue机制。4. Input输入子系统。如上图所示,是触摸板与cpu的连接图,触摸板没有使用cpu的AD转换装置,ft5x06内部自带AD转换,将x y坐标通过I
2017-02-09 15:38:00
2783
1
原创 Rt5370 USB无线网卡移植记录
一 驱动移植 驱动软件包:WI-PI.tar.bz2 在linux解压之后,得到WI-PI文件夹,进入WI-PI文件夹,找到makefile。打开makefile,找到:ifeq ($(PLATFORM),PC)# Linux 2.6#LINUX_SRC = /lib/modules/$(shell uname -r)/build# Linux 2.4 Change to your loc
2016-09-20 16:21:17
3144
原创 linux 在用户空间如何实现usb热插拔
udev介绍:udev是Linux 2.6内核的设备管理器,它在/dev目录下动态地创建/移除设备节点。它是devfs和hotplug的继承者,运行在用户空间,并且用户可以用udev规则来改变设备的命名。udev依赖2.6内核引入的sysfs文件系统。每当一个设备被加入或移除,就会产生内核事件通知用户空间的udev。 mdev介绍: mdev是busybox自带的一个简化版的ud
2016-09-20 15:44:18
2751
原创 Linux SPI总线设备驱动模型详解
随着技术不断进步,系统的拓扑结构越来越复杂,对热插拔、跨平台移植性的要求越来越高,早期的内核难以满足这些要求,从linux2.6内核开始,引入了总线设备驱动模型。其实在linux2.4总线的概念就已经提出来了,直到2.6版本的内核才运用。Linux系统中有很多条总线,如I2C、USB、platform、PCI等。以spi为例,假如有M种不同类型CPU,N中不同SPI外设,在写裸机驱动的时候
2016-08-24 16:42:10
8369
1
原创 温湿度传感器si7020-a20 linux驱动编写
温湿度传感器在工业当中运用的比较广泛,通常用于检测设备所处环境的温度和湿度,温度过高,设备就有可能自动关机来保证设备不被烧坏。 我所采用的温湿度传感器是si7020-a20的芯片,I2C接口,地址如图描述: 也就是说,作为从机,si7020地址是0x40。另外,cpu采用atml 9x35,内核2.6.39。知道0x40这个地址之后,就要在板级文件board-sam9x5ek中添加
2016-08-18 11:44:54
4591
3
原创 SC16IS752驱动编写与调试记录
折腾了几天,终于把spi扩展串口给搞定了,这个芯片有两个通道、可配置波特率、支持IIC和spi通信,支持中断等诸多优良特性。主cpu是采用AT91SAM9X35平台,linux内核采用的是2.6.39,文件系统是用buildroot生成的。由于之前用通用驱动来操作752芯片,所以,我们需要先关闭内核通用驱动的配置(不关闭也是可以的,modalias一改,通用驱动就匹配不上了)。好了,先上原
2016-08-15 09:31:05
14074
5
原创 pm_stay_awake运用在sequans项目中。
本文参照窝窝团队的低功耗管理而写,在其基础上增加了自己的想法。连接如下:http://www.wowotech.net/pm_subsystem/driver_pm.html 在我们移动手持设备中,低功耗是不得不采用的,没有低功耗,那我们的移动设备待机时间是可想而知的。 在我做sequans项目中,遇到一个奇葩的问题:当申请gpio引脚为中断唤醒源时,只能保持100ms
2015-12-22 10:38:07
2281
原创 sequans项目增加开启和关闭LTE
SetUeStarted 参数0关闭。1开启在设备启动脚本sequansd.xml中,(cp -f ${WORKDIR}/mifidata/${MIFIDATA_VERSION}/src/4G/openwrt/feeds/sequans/sequansd/files/sequansd.xml ${SEQ_DIR}/src/4G/openwrt/feeds/sequans/s
2015-12-22 10:33:24
1058
原创 dbus pc机上开发环境的建立
这几天开始弄dbus通信协议,理论知识不多说,网上一大堆,基于dbus开发,首先得搭建dbus开发环境,本人用红帽和centos搭建的。首先下载源码:http://dbus.freedesktop.org/releases/dbus/ 里面有各种各样的历史版本,我下载的是最新版本的。(dbus-1.10.2.tar.gz)tar解压之后,运行./configure出现错误:
2015-10-29 15:13:00
1107
原创 windos批处理从dos界面传入参数到批处理文件的方法
windows批处理从dos界面传入参数到批处理文件的方法:echo 请输入“pcdac+控制数字”的那个控制数字,按回车键结束set/p var=adb shell pcdac+%var%若在dos中输入1,则adb shell pcdac+%var%就相当于:adb shell pcdac+1如果.bat文件这样写adb shellkilla
2015-10-27 15:51:11
5785
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人