暂时未有相关云产品技术能力~
ITGEGE在线教育嵌入式开发讲师。 CSDN博客专家、CSDN-Linux特邀编辑、CSDN博乐、CSDN学院讲师,目前从事嵌入式开发领域,从事与单片机,Linux,android相关的产品开发。
1.make -jX X表示数字,这个命令将编译Android系统并生成镜像,XX表示可以使用到的CPU核数,这在配置好的电脑上特别有用,公司的16核ubuntu服务器执行make -j16只要不到20分钟,而双核PC上需要4个小时! 2.make snod 这条命令将重新生成镜像,消耗的时间很少,类似WinCE的makeimg过程,如果你修改了一些数据文件(如音乐、视频)等文件时比较有用。
最近看到一个博客,他的博文虽然是转载的,但源作者肯定对底层的理解可谓是非常透彻,一副思维导图就可以将整个重要体系建立起来,非常适合大家学习。学习不单单只要有代码,生动有趣更重要。在此推荐一波: http://blog.csdn.net/yuzeze
首先来看一个简单的Android makefile,这个是我上篇文章写的,重新摘出来: LOCAL_PATH:=$(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := eng LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog LOCAL_SRC_FILES:= \ ppp.
Android 系统默认情况下,system 分区是只读 mount 的,因为无法进行往里写数据的,可以用 adb 命令 adb remount 重新 mount 一下。 也可以通过在板子上,输入以下命令重新mount一下system分区命令使其可读可写。
今天要写的这篇博文意义重大,也是网上很少有的,这是在我工作中学会的一项技术,当然,它也是由简单的问题组合而来的。如何在安卓中写C语言程序,调试安卓驱动,测试程序的的一项重要技能,下面我就不说废话了,直接说实用的,怎么用这个东西。
今天看linux内核驱动的代码,发现一个算法写得挺简单,也有意思。 分享一下我的测试代码: #include typedef int U32 ; U32 String2Dec( const char *pstr ) { char ch; U32 value; value = 0; ...
1、安装samba图形化配置界面 sudo apt-get install system-config-samba 2、启动图形化配置界面 3、添加用户,最好是要用adduser命令去添加 具体配置可参考以下博客: http://blog.
当我在终端敲下这条命令的时候,系统就提示telnetd:apt-get:Package has no installation sudo apt-get install xinetd telnetd刚开始我以为是没有这个包,后来查了一下资料发现,有这个软件,于是百度了一下才知道解决以上问题需要如下操作: # apt-get update # apt-get upgrade # apt-get install 这样就可以正常使用apt-get了。
之前写过一篇关于android5.0 init的介绍,这篇博客是介绍android6.0init,之前有的代码介绍不详细。而且分析 解析init.rc那块代码也没有结合init.rc介绍。 一、 main函数的一些准备工作 下面我们分析下源码: [cpp] view plain copy ...
最近在开发MTK的相关项目,需要将一些可执行文件添加到init.rc文件里去,但是开机后发现,这个bin文件没有权限不能执行,于是我就在init.rc中对相应的bin文件增加了权限。后来发现,改了也没有用,百度了一下,有人说这是跟SELINUX有关,于是通过init.
今天来介绍一个开发者常用的知识点, 函数指针数组。 这是个什么东西?初学者看到可能就会懵了,又是指针又是数组,还有函数?指针一个就够呛了,还搞这么多。不怕,容我慢慢道来。 首先,咱们先弄明白一个概念性的问题。
Author:伟易达集团软件工程师 II 杨源鑫Date :2016.11.11Subject:内存为什么是线性分布的 今天有位小伙伴问了我一个问题,问题大概是这样描述的: 师兄,我如何能够先访问一个函数,接着我访问另外一个函数,然后再访问原来的那个函数,但是不能调用原来那个函数,我该怎么实现呢?看完这问题,还真有点饶口啊,其实他想说明的关键就是:函数指针。
关于测试,知识点还是非常丰富的,最近收到了CSDN的书,参考了陈绍英老师写的《大型IT系统性能测试入门》这本书,写下了以下的见解,首先先来了解一下测试种类。 (1)压力测试: 对系统施加压力的测试,利用最大级别的的设置来进行的测试。
1、按照源码中sdk目录下的howto_build_SDK.txt参考文档的编译方式 $ cd ~/my-android-git $ . build/envsetup.sh $ lunch sdk-eng $ make sdk 结果,产生错误log信息如下:#### m...
最近在开始接触Android APP开发,有了一点java基础之后,安卓代码确实看起来就没有那么难了,可以跟着书上把例程敲一遍,然后熟能生巧可以应用起来,现在写了一个简单的APP,实现的是Edit编辑框输入帐号和密码,后台判断,如果正确则跳转到本CSDN博客网址,否则就通过Toast提示出错。
1、如何使用安卓中的按键Button? 1、先从控件库拖一个按钮button的控件,在XML设置好宽高等参数 对应的就是Button这个图标,直接拖出来即可; 以下是设置这个按钮对应的XML代码: 2、在onCreate中新建一个按钮并实例化: Button button = (Button)findViewById(R.
内部类是java中非常方便的一种机制,内部类所在的类称为宿主类,即内部类只能被它的宿主类使用,用这个特性,可以很好的控制类的可见性。 接下来看一个例子: package for_apro; import java.
java虽然比较简单,但是细节的知识点还是很多的,现在,介绍一下抽象类的定义和实现基础。 指的是在类中定义方法,而不去实现它,而在它的子类中去具体实现,继承抽象类的子类必须实现父类的抽象方法,除非子类是一个被定义的抽象类。
最近在看一些和安卓相关的书籍,看到了for_each这种循环结构,这是为了简化java的for循环而改造的一种方便使用的格式。 格式如下: for(数据类型 变量:集合) 语句块 接下来看一个例程: package for_apro; import java.
1、显示Intent意图明显,通过Intent启动另外一个活动,这是安卓中各组件进行交互的一种重要方式。一般用于启动活动,启动服务,发送广播等场景。实现方法,这里我只说思路,实践还是要自己实操才能明白: 1、首先多创建一个activity,命名为别的,这个就是待会咱们要调用的另外一个activity,可以跟主activity一样。
在res中,我们会看到很多目录,分别如下:drawable-hdpi drawable-ldpi drawable-mdpi drawable-xxhdpi layout menu values values-sw600dp values-sw720dp-land values-v11 values-v14 其实很简单,以上所有的目录中,drawable开头的文件夹是用来存放图片的,以value开头是用来存放字符串的,layout是用来存放布局文件的menu文件夹是用来放菜单文件的。
以下是我根据作者的思路,创建的第一个Android应用程序,由于工具强大,代码都自动生成了,如下: package com.example.first_app; import android.os.
按照这本书的指引,我随作者一样创建了一个安卓应用,开始了安卓开发的启程。 找到AndroidMainfest.xml这个文件,打开后看到了我创建的Activity在这个文件里被成功注册,文件内容如下: ...
接口:java接口是一些方法表征的集合,但是却不会在接口里实现具体的方法。 java接口的特点如下: 1、java接口不能被实例化 2、java接口中声明的成员自动被设置为public,所以不存在private成员 3、java接口中不能出现方法的具体实现。
最近一直没有项目做,于是我也不能这样闲着,我得开始学习新的技术,并且巩固以前自学的技术。以下就是我写的一个简单的java存取款代码,很简单,可能还有更简单的方法,目的是为了熟悉java的基本使用。 package arraysss; import java.
package shopping; import java.util.*; public class SendGiftMenu { public static void main(String[] args){ Random rnd = new Random(); Scanner input = new Scanner(System.
#include #include #include #include int main() { int count ; int i , j ; char buffer[50][50] = {0} ; system("color 0A"); sra...
在学习java的时候,看到char ch = '男' ; 我就觉得很奇怪,char类型不是占用一个字节吗?为什么定义成一个汉字被说成是一个字符了? 原来,在C语言中,char在32位操作系统下占用1个字节,而在java中占2个 字节。
正常情况下,switch case语句是这么写的: switch(参数) { case 1 : ... ; break ; case 2 : ... ; break ; default: .
为了方便我日常工作中的编译环境,免去我敲命令行所浪费的时间,我个人写了一个非常有用而又简单的脚本框架,该框架即可以完成的工程源码编译,也可以清除,拷贝等等操作,具体需要开发者自己来实现细节,我的框架思路就是用到了bash shell脚本的case语句,这个语句类似我们C语言的switch语句,有若干个分支,接下来我们就来看看具体的编写方法: #bin/sh #date:2016.
今天公司装了一天新电脑,准备把它装成服务器,于是为了方便开发的使用,我在上面部署了一个samba,用来实现window和linux的联系: 具体步骤,我详细的查看了百度,高手云集,以下就是总结了网友的经验,现在记下来,以后有用就不用到处找了。
1. 首先介绍linux中的守护进程 在Linux系统中有一个特殊的守护进程inetd(InterNET services Daemon),它用于Internet标准服务,通常在系统启动时启动。
http://jingyan.baidu.com/article/d5c4b52be79960da560dc59f.html 用U盘装一个linux系统是非常简单的事情,不会就看看这篇文章吧,后期我会把装ubuntu的步骤也放到这里。
#include /* _lrotr()将一个无符号长整形数左循环移位的函数 原形:unsigned long _lrotr(unsigned long value,int count) 功能:将value向左循环移动count位。
什么是进程(Process):普通的解释就是,进程是程序的一次执行,而什么是线程(Thread),线程可以理解为进程中的执行的一段程序片段。在一个多任务环境中下面的概念可以帮助我们理解两者间的差别:进程间是独立的,这表现在内存空间,上下文环境;线程运行在进程空间内。
一个整数,前后对称称为回文数,比如11211是回文数,12321是回文数。那么回文字符串也是同样的道理,strrts是回文字符串,heleh是回文字符串。 我们就可以来实现下它,非常的简单。 #include #include /* *date:2016.
#include #include #include HANDLE hOut; HANDLE hIn; void ClearScreen(void); void DispMousePos(COORD pos); // 在第24行显示鼠标位置 int main() { hOut = ...
这里设置只要调用system();这个函数就行了,参数是字符串,想要设置终端的颜色,按照以下格式可以设置: //数字表示前景色,字母表示背景色 //color 0=黑色 1蓝色 2 绿色 3湖蓝色 4红色 5紫色 6黄色 7白色 8灰色 9淡蓝色 // A淡绿色 B淡浅绿色 C淡红色 D淡紫色 E淡黄色 F亮白色 所以,在程序中,只要写system("color 2D");就代表设置前景色为绿色,背景色为淡紫色。
平抛运动这个相信读了高中物理都知道这个概念了,详细的我就不说了,不明白的看看百度: 平抛运动 接下来看看用控制台实现的平抛运动算法: #include #include #include #include #include #include int main(void) { float v0 = 0.
简单的写了一个文本编辑器,功能很简单,但足以把文件IO相关的操作熟悉了,可能功能或者分配的大小还不够完善。请参考参考: #include #include #include #include #include #include int count ; char ch = 0; ch...
#include //自守数算法 //ep : 25 ^ 2 = 625 76 ^ 2 = 5776 9376 ^ 2 = 87909376 /*ep : * 376 被乘数 * *376 乘数 * ------ --------- * 2256 第一个部分积=被乘数*乘数的倒数第一位 * 2632 第二个部分积=被乘数*乘数的倒数第三位 * 1125 第三个部分积=被乘数*乘数的倒数第三位 *-------- * 141376 将以上的部分积的后3位求和后截取后3位就是3位数乘积的后3位。
今天在看MTK提供的SDK编译文档,按照步骤做,结果出错了,文档如下: 2- Building an SDK for MacOS and Linux -------------------------------------- First, setup your development en...
关于这类算法,以前的文章已经讲过类似的:BCD码转二进制 #include // HEX转BCD //bcd_data(0) unsigned char BCD2HEX(unsigned int bcd_data) { unsigned char temp; temp=((b...
代码很简单,看看就懂了,没什么好说的,就是一些位操作。 #include #define LongToBin(n) \ ( \ ((n >> 21) & 0x80) | \ ((n >> 18) & 0x40) | \ ((n >> 15) & 0x20...
在Linux内核中有一个宏__stringify,在include/linux/stringify.h定义如下: #ifndef __LINUX_STRINGIFY_H#define __LINUX_STRINGIFY_H /* Indirect stringification.
page = alloc_pages(GFP_KERNEL, get_order(1234));分配失败返回NULLGFP_KERNEL ---> 分配标志,当没有足够内存分配时,睡眠阻塞,直到有内存分配其他常用分配标志 GFP_ATOMIC,不会阻塞,没有足够内存分配时返回错误分配2的get...
什么是僵尸进程? 僵尸进程, 指子进程退出后, 父进程还没有回收子进程的资源,这个子进程就处在于僵尸状态。 来看看如何产生? #include #include int main(void) { pid_t pid ; //zombie 子进程先退出,父进程没有回收子进程资源...
什么是孤儿进程? 孤儿进程, 指在父进程退出后,而子进程还在运行,这个子进程就成了孤儿进程,这时由init进程(pid=1)接管 来看看例子: #include #include int main(void) { pid_t pid ; //父进程先结束,子进程还在运行...
守护进程是什么?就是在后台运行的进程。 那么如何创建守护进程呢? 1. 创建孤儿进程 2. setsid() 创建进程会话 3. 重定向标准输入, 标准输出 4. chdir, 改当当前进程的工作目录 接下来看一个例子: #include #include #include int ...
在开始之前,我们先来了解一些基本的概念: 1. 程序, 没有在运行的可执行文件 进程, 运行中的程序 2. 进程调度的方法: 按时间片轮转 先来先服务 短时间优先 按优先级别 3.