暂时未有相关云产品技术能力~
ITGEGE在线教育嵌入式开发讲师。 CSDN博客专家、CSDN-Linux特邀编辑、CSDN博乐、CSDN学院讲师,目前从事嵌入式开发领域,从事与单片机,Linux,android相关的产品开发。
1、dose not point to a valid jvm installation出错问题 按照以下方法设置一定可以不会出现这个错误。 我的JDK安装路径如下: C:\Program Files\Java\jdk1.
http://blog.csdn.net/yimiyangguang1314/article/details/7755815 http://blog.csdn.net/azloong/article/details/6140911
今年2月份,受CSDN学院邀请,我很荣幸的成为了CSDN学院的讲师,正在制作优质的课程,帮助更多开发者入门。 欢迎大家加入嵌入式软件开发QQ交流群: 610498871 观看地址:http://edu.csdn.net/course/detail/4018
在开发过程中发现串口不能输入,所以就一直使用ADB进行调试,后来解决了这个问题。 看下图: 点开SecureCRT的这个界面,将右边的Flow Control的下面这三个选项的勾都去掉。然后按确定。 现在可以正常输入了。
前面,我们基本已经学会怎么去编写一个简单的字符设备驱动程序了,这节,我们来看看友善之臂中提供的led驱动。 参考之前写的文章,我们已经知道LED的GPIO口,和一些配置信息: http://blog.
这一节,我们再来看看新的知识点,这一次,我们将进一步完善这个字符设备的驱动程序。 首先,将上一节的代码做下修改: #include #include #include #include #include #include #include //创建一个字符设备 struct c...
上节,我们讲解了如何写第一个linux字符设备驱动程序,这节,我们将代码做一下修改。 如下: #include #include #include #include #include #include #include dev_t dev_no ; static int __i...
从这篇博文开始,我将开始手把手教会大家写linux设备驱动程序 这是开篇,如何来写第一个字符设备驱动程序。 首先,写一个最简单的字符设备驱动程序需要什么?或者说我们需要了解什么? 1、每一个字符设备至少需要有一个设备号 2、设备号 = 主设备号 + 次设备号 3、同一类设备的主设备号一般是相同的,但不是绝对的。
http://blog.csdn.net/tommy_wxie/article/details/8193954 http://blog.csdn.net/tommy_wxie/article/details/8194276
找到布局文件:packages\apps\Launcher3\res\values\dimens.xml +74将48dp改为0dp 48dp找到相关触发代码:packages\apps\Launcher3\src\com\android\launcher3\allapps\DefaultAppSearchController.
http://blog.sina.com.cn/s/blog_a6559d9201015vx9.html
找到: frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\PhoneStatusBar.java这个文件 找到start方法: 将start方法下这个方法注释重新编译安卓系统即可。
网上参考了许多博文,更改了不少都没有结果,搜索框就是去不了,后来在以下的这个java文件中找到这个按钮监听事件 packages/apps/Launcher3/src/com/android/launcher3/Launcher.
http://www.th7.cn/Program/Android/201412/326584.shtml 去除导航栏主要意图为: 1>当手机有物理按键时,需要把虚拟按键(也叫做导航栏)去除或者隐藏,是用户界面的需要 2>如苹果那样只有一个按键的,不要这个虚拟按键 3>模拟器上自己做了导航键盘,不需要android自带的虚拟导航按键 这里介绍直接去除的方法: 1>去除导航栏: 设置导航栏的宽度为0即可,代码:frameworks/base/core/res/res/values/dimens.xml。
http://blog.csdn.net/mcgrady_tracy/article/details/42104193
Kconfig怎么写的在上节就已经教大家写了。 这节我们来写写增强版的,因为Kconfig有太多太多可以配置的,所以这里我就不给出图片演示了,请参考上节的文章,再来看这节大家就会大彻大悟,然后自己去尝试吧。
在Android 5.0源代码根目录下: 找到 :famerawork/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.
在源代码根目录下: system/core/init/init.c 找到 static void selinux_initialize(void) 函数将boot is_enforcing = selinux_is_enforcing();改成boot is disabled = selinux_is_disabled();security_setenforce(is_disabled); 重新编译即可。
在Android 5.0源代码根目录下: 找到system/extras/su/su.c下的main函数下的这段代码: 将其注释后重新编译即可。 //安卓系统权限修改2017-1-26 yangyx--->change /* Until we have something better, only root and the shell can use su.
关于系统调用,相信学习过操作系统的同学应该都不陌生。 那么,什么是系统调用? 百度的权威解释如下: 点击打开链接 由操作系统实现提供的所有系统调用所构成的集合即程序接口或应用编程接口(Application Programming Interface,API)。
一般情况下会出现CDC serial 和 ADB设备安装失败。这时候我们就要手动进行安装了 打开Window设备管理器 鼠标右键打开带?号的驱动程序--->选择驱动程序--->更新驱动程序--->浏览计算机以查找驱动程序软件--->从计算机的设备驱动程序列表中选择。
今天,我就来教大家写写最简单的Kconfig,什么是Kconfig? 我们配置过的信息最终会在这以下的两个文件中找到。 这个文件会被.c包含 include/generated/autoconf.
clang++: error: unable to execute command: Killedclang++: error: clang frontend command failed due to signal (use -v to see invocation)clang version 3.
通过查阅百度和谷歌,以下解决方法: The problem has been solved, because I installed the amd64.iso linux system,so first must excuse apt-get install lsb-core,then you can excuse arm-linux-gcc -v也就是64位系统需要安装lsb-core这个库才行。
git的安装很简单,只要一句命令就可以解决了。 (1)安装Git sudo apt-get install git (2)git的使用 1、获取仓库的全部源代码 git config --global user.
今天真是背。。。安装了一晚上的源都安装不成功,一直提示校验和有问题。 于是问了其他大神,很多人提供了方法,但都没什么用,后来用以下这种方法解决了问题,因为update不成功导致后面java jdk7安装不成功。
说到写第一个linux内核驱动程序,再简单不过了。以前也写过,这次将做一个图形化的整理。 我这里以我的开发环境tiny4412为主,我将在这上面写第一个驱动程序。 首先,我在driver/目录下创建yangyx目录, 在目录下新建一个hello.c和一个Makefile hello.c内容如下: hello.c包含的头文件就类似咱们写标准C一样的头文件。
在源码目录下: Ctag -R . 前提是已经安装了Ctag这个工具 然后会目录下生成索引文件。 如何搜索: ep: vim -t memcpy 回车 会出现索引,按esc两次,根据信息提示选择标号进入API 进到API后 : ctrl + ] 进入另一个api,返回 ctrl + ...
1、make bootimage 编译生成kernel.img和boot.img的整合 会在out目录下生成以下文件。Target ram disk: out/target/product/em_t8350_emmc/ramdisk.
#include #include //用指针的方式检测机器的大小端模式 int small_port() { int a = 1 ; char b = *((char *)(&a)) ; return b ; } int main(void) { int i = small_...
container_of宏在很久以前的文章我就已经有分析写过了,但是看回去,感觉以前自己对这个宏的表达描述分析能力还是有待提高,毕竟那时候刚接触linux内核不久,整个人都懵懵哒,无法说得让别人通俗易懂。
俗话说,不会写makefile的程序员不是好的程序员。 看了很多人写的makefile教程,感觉太难懂,还不如韦东山老师视频里讲的好理解。 先记下这几个符号,以后看到就不会忘记这是什么东西了。 先来看一个例子: Person: main.o person.o g++ -o $@ $^ %.o : %.cpp g++ -c -o $@ $< clean: rm -rf *.o Person其中: 1、Person表示要生成的目标文件。
原理: 虚拟一个TYPE类型的结构体变量,通过TYPE.MEMBER的方式来访问MEMBER成员,进而得到MEMBER成员相对于整个结构体首地址的偏移量。 作用:为接下来的container_of宏的讲解出现做铺垫 offsetof宏: #define offsetof(TYPE,MEMBER) ((int) &((TYPE *)0)->MEMBER) 接下来看看例程就明白了,其实这个宏挺简单的,&((TYPE *)0)->MEMBER其实相当于得到了成员的偏移减去0地址偏移,也就是结构体的首地址,进而就得到了该成员相当于整个结构体的偏移量。
#include //默认情况下,结构体一般在内存中的自动对齐格式是4个字节 //结构体设置手动对齐 //如果这里是4,那么下面的打印就是8 //如果这里是2,那么下面的打印就是6 //如果这里是1,那么下面的打印就是5 #pragma pack(4) struct mystu { char a ; int b ; }; #pragma pack() int main(void) { printf("str:%d\n",sizeof(struct mystu)); return 0 ; } 自动对齐不需要加#pragma pack这个宏。
生成补丁文件diff -Nurp 源文件或文件夹 新的文件或文件夹 > xxx.patch打补丁patch -p0 < xxx.patch 操作需要在当前目录下,先比较两个文件或文件夹的不同,再用patch将生成的xxx.patch打到目标文件或文件夹中。
测试可以采用 sdk 下的google开源工具 external/stressapptest也可以采用 开源的memtester。 (1)stressapptest 其是:Stressful Application Test (stressapptest) 的简称 Stressful Appl...
源代码如下: #include #include #include #include #include int get_buf_data(char *buf,char *data) { char *p1 =NULL,* p2=NULL; int num =0; p1 = ...
This caused a few problems the first time C++ was ported to a system where case wasn't significant in the filename, however, and different users adopted different solutions: .
更改源的方法:sudo vim /etc/apt/source.list # deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.
#include #include #include #include #include #include #include #include #define MAX_FILE_NUM 128 #define MAX_PATH_LEN 128 char file_path...
1、安装FTP软件源 sudo apt-get install vsftp 2、安装完毕FTP会自动为我们创建帐户,这时候设置密码就可以了 sudo passwd ftp 按提示输入即可 3、创建ftp用户的home目录,使用sudo mkdir /home/ftp命令 4、设置home目录权限chmod 777 /home/ftp 5、配置/etc/vsftpd.
最近在开机加一些自己的测试程序,编译的是eng版本,希望安卓开机后能够看到自己的调试信息,可是一开机就会有很多其它的信息干扰我的调试,那么如何屏蔽掉kernel的kmsg打印的这些信息呢? 很简单,我们找到以下这个文件: 在我的源码目录下:MT8127_M0_MP8_0407_BK\bootable\lk\app\mt_boot\mt_boot.
今天心血来潮,想把之前做的开发板环境配置以及编译的东西重新整理一下,毕竟最近在搞开发,所以有必要温故而知新。 以下是我整个Android-5.0的工程目录列表: 其中build_4412_img.sh、copyimage_to_window_system.sh是我自己写的快速编译拷贝脚本。
2015年12月1日,结束了4个月的尚观嵌入式培训生涯,经过了几轮重重面试,最终来到了伟易达集团。经过了长达3个月的试用期,正式成为了伟易达集团的助理工程师。 回顾一年来的学习,工作,生活。各种酸甜苦辣,庆幸是有一群支持我的同事小伙伴,他们同样来自尚观IT培训机构,4年前,他们也是一样,怀着自己的理想考上了理想的大学,4年后,怀着自己的理想通过4个月的培训晋升,巩固自己的知识体系,最终也是找到了一份满意的工作,来到了VTECH, 这一年,收获还是非常大的,获得了公司的升职,同时自己的CSDN博客也从默默无闻提升到了CSDN博客专家。
1、arm-none-eabi-g++:是编译ARM裸板用的编译器,不依赖于操作系统。 2、-Xlinker -T "../LF3Kmonitor.ld" -Xlinker -Map="Bogota_ICT_V.map"-ram-hosted.ld -mc 使用连接器:-Xlinker -rpath -Xlinker (-Xlinker -rpath=) 第二个-Xlinker作为参数时表示给连接器传参。
今天在写一个SPI-flash读写程序,目的是要将一个二进制文件写到SPI_FLASH中,最后通过开机读取,实际上这个.bin文件就是uboot和second-boot的结合体。通过SD卡写到SPI-FLASH中就可以脱离SD卡开机启动了。
今天在工作上搞了一天高通的芯片uboot程序,目的是希望将一个裸板的程序移植到uboot中,并且开机让它运行。这个芯片是NXP4330,目前是高通的一个芯片,基于ARM-contexA9架构,那么就跟4412是一样的架构了,今天将uboot加载流程基本上算是搞明白了,也明白了uboot最后是通过一些手段,最终能够去加载kernel.img,最终启动内核,后面就是加载文件系统了。
在ARM裸板驱动编程中,是不允许程序直接调用C库程序的。为什么呢?因为此时kernel还没有被加载,所以在封装在kernel层的C库的API是用不了的,那怎么办? 在开发过程中,printf的功能我不用再详细多说,就是用来debug调试程序的,有了printf,写代码出错的时候能够快速定位错误。
最近要开始搞新项目,基于arm的高通方案的项目。 那么,如何在ubuntu上搭建这个编译环境呢? 1、找到相关的安装包:http://download.csdn.net/download/storeage/7858739(我的在这里下的) 2、解压缩包到/home目录下,也可以放到其它地方,随你。
static inline int get_order(unsigned long size) { int order; size = (size-1) >> (PAGE_SHIFT-1); order = -1; do { size >>= 1; order++; } wh...