暂时未有相关云产品技术能力~
ITGEGE在线教育嵌入式开发讲师。 CSDN博客专家、CSDN-Linux特邀编辑、CSDN博乐、CSDN学院讲师,目前从事嵌入式开发领域,从事与单片机,Linux,android相关的产品开发。
之前在编译一个公司的MTK平台的Android开机加密程序的时候死活编译不通过,后面发现,有一样东西没有设置: TOOLPREFIX = $(ANDROID_SRC_PATH)/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/bin/arm-linux-androideabi- 这一项指的是用Android交叉编译工具链中的arm编译器。
讲这个例子前,咱们先来看一个简单的程序: 字符串数组实现数字转字母: #include #include int main(void) { int num = 15 ; //26个字母 const char str[] = "abcdefghijklmnopqlstuvwxyz" ...
前面,我分析了Tpd和Keypad的驱动框架,其实大体都差不多,都是利用平台总线进行管理和注册。那么,今天要总结的是MTK平台的Camera驱动框架。 参考博客:http://www.2cto.com/kf/201605/509354.
上一节,看完了http://blog.csdn.net/morixinguan/article/details/7717020,tpd驱动框架的实现。 那么这一节来分析下Keypad驱动框架的实现,其实大同小异,套路也是类似的,我们来看看:
分析代码架构 mtk_tpd.c位置: kernel-3.18\drivers\input\touchscreen\mediatek\mtk_tpd.c .
前面我们学习了C ++使用初始化列表的方式初始化字段: http://blog.csdn.net/morixinguan/article/details/74331335 这一节的原理和前面的差不多。
http://blog.csdn.net/morixinguan/article/details/76850600 上节,写WIFI MAC地址的时候我们已经知道,MTKAndroid系统的Gsensor校准的数据其实也是存储在NVRAM中的,Gsensor隶属于传感器系统架构。
首先,找到源代码,在external/mksh/mkshrc,打开这个文件后会看到开头有如下脚本: android4.2源码内容如下: : ${TERM:=vt100} ${HOME:=/data} ${MKSH:=/system/bin/sh} ${HOSTNAME:=android} : ...
最近在和NVRAM打交道,所以务必要总结一下知识点,如有雷同,纯属巧合。以下的知识点参考MTK_on_line最新的文档总结。 在做开发的时候,搜索网络AP经常会看到NVRAM WARING警告的信息,后面会有对应的数值。
看到一篇搭建git服务器的文章,主要是公司内网搭建的,讲得非常详细,比廖雪峰的要完整,必须赞! http://developer.51cto.com/art/201507/483448.htm
在MTK的机器中,如果不用特定的工具烧写MAC地址,在开机后打开WIFI后会显示: “NVRAM WARNING: Err=0x10” 这就是没有烧写mac地址的原因,所以每次打开wifi,wifi的MAC地址都是一个随机产生的值,为什么会这样? 答案在: vendor/mediatek/p...
上节,我们学习了boda常用的属性以及HTML的一些标记,但是图显示的效果却不是那么的好看。 原因就是没有排版好,我们这次使用居中来使这个页面更好看一点,顺便多加入几个别的标记。 HTML排版标记 (1) : 表示一个段落。
上节 ,我们了解了网站制作相关的基础知识,也了解了制作网站需要用到的语言,以及一些简单的HTML的基础知识学习笔记: 博文链接如下:http://blog.csdn.net/morixinguan/article/details/76457441 这节,来写一下body常用属性以及文本修饰标记 的常用属性(1)bgColor : 网页的背景色。
一、网络常见基本结构: 1、B/S网络结构: Browser/Server:浏览器/服务器,这是现在最流行的网络模式。平常的上网:比如新浪网、凤凰网等。我的电脑(客户端) http请求 新浪网(服务器端)在浏览器软件的地址栏中,输入一个 ==================> 当Apache收到客户端的请求后,网址,并回车。
官方的文档说: 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址 在Lua中迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素。
Lua语言中,数组和C还是有区别的,Lua的数组下标从1开始计数,而C语言的数组下标从0开始计数,我想这可能是设计Lua的人想要符合人的思维习惯而去这么设计的。 数组,也就是按相同类型,在内存中顺序排列的一个组合,这点跟C基本没多大的差别。
http://blog.csdn.net/morixinguan/article/details/75228335 上一篇博文能把ko编译出来,非常兴奋的想,这一定是没问题了,结果删除原先的ko后,加载新编译好的8188eu.
下了rtl8188EUS_linux_v4.3.24_16705.20160509.tar.gz,看了里面的数据手册,发现有些看不懂,上网搜了一下,发现大部分博客都在扯淡。。。后来还是我把Makefile一句一句的看完才知道怎么做。
参考这个网友写的,比较简单容易理解。 http://blog.csdn.net/wlgy123/article/details/49206183
众所周知,C,C++,python等语言都有运算符,那么Lua也不例外,因为它是C写的嘛! Lua分为主要三类运算符,分别是算术运算符,关系运算符,逻辑运算符,还有特殊运算符。 1、算术运算符有: + (加) -(减) *(乘) /(除) %(取模) ^(求幂) -(符号) 来看一个例子:test6.
Lua的函数功能很强大,保留了C语言的一些基本的特性,但是也有C语言没有的特性,比如,lua可以在一个函数返回多个值,我们来看看下面这个案例: 解释运行: lua test5.lua --定义一个函数,传入两个数,比较大小 --函数名为:compare_max_or_min --返回值为:第...
Lua提供了if语句和if else语句作为流程控制语句,当然,符合C的特点,流程语句之间可以实现嵌套操作,当然流程控制也可以和循环体结合进行控制。 1、if语句 if(布尔表达式) then --[ 在布尔表达式为 true 时执行的语句 --] end案例:test3.
Lua的循环和C语言的循环的语法其实差不多,所以,理解起来就很好理解的啦,所以实现也很简单,跟C没什么两样,都差不多。 案例如下: test1.lua -- 1、while循环 --[[ 理解为C语言的就行了,其实差不多的 语法格式: while(true) do 执行语句 en...
看以下案例: test.lua -- 第一个lua脚本 --注释使用“--”符 --变量未定义时,默认初始化的值为nil --这样的定义为全局 num1 = 1 ; --加了关键字local表示这个变量是局部变量 local num2 = 2 ; --定义变量的末尾不加分号;也是可以的,个...
众所周知,Lua是一种强大的脚本语言,并且这种语言是用C语言实现的。为什么要学习这门语言?因为它可以增强我看C语言代码的功底。 我下的Lua版本是Lua5.3,关于Lua5.3的简介如下: http://www.
若一个程序的功能是对某种特定的数据类型进行处理,则将所处理的数据类型说明为参数,那么就可以把这个程序改写成为模版,模版可以让程序对任何其他数据类型进行同样方式的处理。 本节主要是说一下C++的函数模版,函数模版的定义一般形式是: template 返回类型 函数名(形参) { ...
1、什么是抽象类? 答:简单的说,抽象类就是至少有一个纯虚函数的类。 2、抽象类的作用? 答:抽象类的主要作用就是为它所组织的继承层次结构提供一个公共的基类,这样它就具有公有行为的特征,其它派生的类可以从这个公共的基类中继承和实现接口,通过抽象类多态的使用其中的成员函数。
纯虚函数就是一个在基类中的虚函数,差别只是在一般的虚函数声明的后面加了“=0”,虚函数允许函数通过与函数体之间的联系在运行时才建立,也就是在运行时才决定如何动作,称为运行时的多态性,虚函数是可以有具体实现代码的。
C++中的友元既可以实现友元函数,也可以实现友元类,也就是说一个类也可以作为另外一个类的友元。当作为一个类的友元时,它的所有成员函数都是另一个类的友元函数,都可以访问另一个类的私有或者公有成员。 请看实例: #include #include using namespace std ; /...
友元函数是一种特殊的函数,它必须要在类中进行声明,但其本身并不是类的成员函数,但友元函数可以访问类的私有成员变量。 友元函数的好处: 1、实现类之间的数据共享 2、提高程序运行效率,方便编程 友元函数的坏处: 1、破坏数据的隐蔽性和类的封装性 2、降低了程序的可维护性 所有,友元函数应当谨慎的去使用它。
静态数据成员是在一个类中用关键字static声明的数据成员。在C++中,一般使用静态成员来代替C语言的全局变量,以达到数据共享。C和C++的全局变量有一定的局限性,可以任意被修改,也容易和其它的变量名冲突,故在C++中,一般不使用全局变量。
复制构造函数是一种特殊的构造函数,有一般构造函数的特性。它的功能是用一个已知的对象来初始化一个被创建的同类对象。复制构造函数的参数传递方式必须按引用来进行传递,请看实例: #include #include using namespace std ; class Student { ...
在android-5.0.2/build/core/Makefile的315行可以看到,这里是apk生成签名相关的地方。 315 name := $(TARGET_PRODUCT) 316 ifeq ($(TARGET_BUILD_TYPE),debug) 317 name := $...
#include #include #include struct student { int a ; int b ; int c ; int d ; int e ; int f ; }; char stu[6] = {10,10,10,10,10,10}; /...
在posix编程中,如果在不同的线程中几乎同一时间操作同一个变量的时候,就会出现不同步。 如何解决这样的问题,这里需要用到互斥量,互斥锁的概念。请看UNIX环境高级编程P299页 #include #include #include //线程1 void *thread_func1(v...
几个月之前,接触Android recovery源代码的时候,看ScreenRecoveryUI类的时候,那时候C++基础还不是特别好,一直不明白以下的初始化方式: 下面这个是Recovery的一个构造函数,代码位于:screen_ui.cpp,它的类的实现在screen_ui.h。
最近在学习C++,了解到,C++中对C做了扩充,使用结构体时也可以像类一样,规定私有数据类型和公有数据类型,同时也可以在struct中实现方法设置等等。 但为了保持面对对象的特性,建议还是使用class来描述一个类。
之前获取文件大小总是用死办法,open一个文件,然后lseek,read这样去获取文件的大小,这样的效率实在是低,还有可能粗心大意还会出错。 一次偶然在Android的源代码中看到获取文件大小的函数,在以下范例中。
搞Android系统这么久了,说实话,我连apk怎么写还真是不会,说实话能够看懂,简单改改就不错了,说来惭愧,我是嵌入式出身。最近开始学习Android应用开发,和我的底层结合起来,为了工作,咬着牙也要学下去!!! 首先,我使用的是Android Studio这个软件。
当我们在shell中敲击df这条命令的时候,会看到: root@android:/ # df Filesystem Size Used Free Blksize /dev 446.
之前一直不太清楚,当我们在shell命令行输入很多命令,会在屏幕上输出一些信息,为什么一执行clear这个命令以后,所有的信息就没了呢? 现在终于搞明白了,找到了clear命令的源代码clear.c 源码如下: #include int clear_main(int argc, char ...
首先,处理按键按下后,可以通过发送广播让应用层识别按键事件,那么怎么来发送,可以找到下面这个文件: frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.
http://blog.csdn.net/morixinguan/article/details/73149058 上一节说到4412的在Android 5.0源代码中支持了许多的格式,那么这些格式最终又是怎么确定的呢? 找到以下这个文件: android-5.
在Android平台上,如果在开始启动前去加载一个测试程序,该测试程序的功能是去读取wifi的mac地址,然后显示出来,显示的方式可以使用移植recovery源代码的miniui。 那么读wifi的mac地址无疑便是要初始化,装载wifi驱动后,通过cat /sys/class/net/wlan0/address去获取。
tiny4412 4412 Android 5.0系统上,支持以下的media格式,文件位于: device/friendly-arm/tiny4412/media_codecs.xml 打开后我们可以看到这个xml包含相关的音视频编解码支持的格式: ...
在4412中,开发板上只有四个按键,我们可以根据产品的需求自定义按键的功能。 在KeyEvent.java这个文件中,可以通过发出按键的事件,上报给上层。让上层app或者服务去接收处理。比如,我们可以看到这样的代码: 注释写得非常清楚,按下按键后,可以发出键值,按下的时间等等,也可以通过Android广播的形式去发送这些事件。
LOST.DIR是专门收集Android系统运行时意外丢失的文件而设置的文件夹,其收集的内容包括系统因为意外而没能保存的各类内存、交换、暂存等数据,软件的缓存数据,以及其他各类文件。只要系统发生意外(如在连接电脑拷贝数据过程中拔掉USB线、不小心删除了SD卡里某程序数据文件夹或者软件突然无法正常运行等),便会将发生意外的文件移到此目录下,以数字序列名称代替该文件的扩展名。
http://blog.csdn.net/morixinguan/article/details/72858346引用我的代码片 在上一篇文章中,我们大致的介绍了recovery的启动流程,那么,recovery升级或者做双清的时候,那些图形动画又是如何实现的呢?我们来看看代码: 以下这段代码位于recovery/screen_ui.
找到frameworks/base/media/java/android/mtp/MtpDatabase.java 找到以下方法: private int getDeviceProperty(int property, long[] outIntValue, char[] outStringV...
关于线程等待,有一个很好的例子,代码如下: #include #include #include #include pthread_t tid ; void *thread(void *arg) { printf("1s\n"); sleep(1); printf("2s\n")...