自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(264)
  • 资源 (11)
  • 收藏
  • 关注

原创 笔试题 8

1.请输出下面程序的结果:int main(void){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); return 0;}2.请输出下面这段程序的结果:int main(void){ int a[][3]={1,2,3,4,5...

2018-03-14 14:30:54 832 3

原创 01 OrangePi H3 Android源码编译

所需的源码及工具下载链接: https://pan.baidu.com/s/1qZlSb3A 密码: 21b2编译android前,先确保内存有足够大(尽量4G以上), 并最好有4G以上的交换区. 否则有可能会在编译过程中异常退出. 如果没有交换区或交换区不够大可以在硬盘上生成一个交换区文件作交换区使用: dd if=/dev/zero of=/usr/myswap bs=1...

2018-02-26 15:54:34 2864 4

原创 02 A33 Android系统源码编译

下载源码包,解包后进入Android-SDK/tools目录.先安装dtc-master和fakeroot工具. dtc-master安装方法: 解包后,在源码目录下: make && make installfakeroot安装方法: 解包后,在源码目录下: ./configure ; make && make install安装jdk, 注意因a33提供的是androi

2017-12-14 16:38:20 1648

原创 28 H5上rtl8189ftv wifi驱动移植

现板上带有一个sdio接口的wifi芯片: sdio其实也就是sd/mmc的接口,只是协议有区别而已.所以使用sdio接口,需要先把sd/mmc的控制器驱动才可以.通过官网的说明: http://linux-sunxi.org/Wifi#RTL8189FTV rtl8189ftv型号的wifi用的就是rtl8189ES驱动. 与型号8189fs一致.下载驱动源码: git clone https

2017-12-07 09:48:47 11319 1

原创 27 在H5上实现spi-tft屏的简单驱动

屏的购买链接:https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-16248799892.67.1b6f9109XnyTYo&id=520967019281内核里设备树关于spi屏的描述:&spi1 { #address-cells = <1>; #size-cells = <0>; status = "okay";

2017-12-05 10:37:54 4216 5

原创 26 设备树里mcp2515的描述

mcp2515工作原理及使用spi_board_info描述设备的方式请参考:http://blog.csdn.net/jklinux/article/details/74347820mcp2515设备驱动在内核里的配置:make menuconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-[*] Networking support --->

2017-12-04 14:55:52 4221

原创 25 设备树里直接提供gpio口的中断号

通常是在设备树的设备节点里通过属性提供所用的gpio口,再在设备驱动代码里根据gpiod_to_irq(…)找到gpio口对应的中断号来使用.但有些场合下并不完全适用.如在描述i2c设备/spi设备时, 它们可以直接提供中断号:struct i2c_client { unsigned short flags; unsigned short addr;

2017-12-04 11:00:39 6358 2

原创 24 设备树里描述spi设备

spi设备驱动模型参考:http://blog.csdn.net/jklinux/article/details/74331212内核文档里没有直接增加spi设备的驱动方法, 但可通过设备树里现有spi设备的描述来学习.spi设备在设备树里像描述i2c设备一样,需要在spi控制器节点里用子节点描述spi设备节点:&spi0 { /* spi控制器节点 */ ... cs-gpios

2017-12-03 15:06:49 9934

原创 23 H5的spi控制器驱动

spi工作原理参考:http://blog.csdn.net/jklinux/article/details/74287735在内核里的配置选项:make menuconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Device Drivers ---> [*] SPI support ---> <*> Allwin

2017-12-03 14:06:13 1824

原创 22 使用内核里的at24-eeprom设备驱动

at24-eeprom设备驱动在内核里的配置选项:make menuconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-Device Drivers ---> Misc devices ---> EEPROM support ---> <*> I2C EEPROMs / RAMs / ROMs

2017-12-01 17:10:57 2983 6

原创 21 使用设备树的i2c设备驱动

在内核里表示i2c设备驱动的结构体有点小变化:struct i2c_driver { int (*probe)(struct i2c_client *, const struct i2c_device_id *); //当使用id_table进行匹配时, 会把匹配上的i2c_device_id变量地址传过来. int (*remove)(struct i2c_cli

2017-12-01 16:20:53 4097 6

原创 20 设备树里声明i2c设备

参考内核源码目录里的Documentation/i2c/instantiating-devices 文档里主要的内容:Method 1b: Declare the I2C devices via devicetree-------------------------------------------------This method has the same implications as m

2017-12-01 14:24:24 3494 2

原创 19 i2c的dev-interface实现eeprom的读写

eeprom是用于存放小量数据的存储芯片。 at24c02就是使用i2c接口的eeprom的一种.at24xxx eeprom的工作原理参考: http://blog.csdn.net/jklinux/article/details/74162876dev-interface就是i2c控制器供应用程序调用的接口.不熟识的话请参考: http://blog.csdn.net/jklinux/artic

2017-12-01 09:17:37 991

原创 笔试题 7

一. 选择题 1 属于system v进程间通信方式的是 ( ) A. 管道 B. 信号量 C. 软中断信号 D. 锁机制2 假设文件fileA的符号链接为fileB, 那么删除fileA后,下面的描述正确的是( ). A. fileB也随之被删除 B. fileB仍存在,但是属于无效文件 C. 因为fileB未被删除, 所以f

2017-11-30 22:19:34 2180

原创 18 i2c控制器之应用程序的调用

通常情况下,i2c设备驱动里应是通过调用已驱动好的i2c控制器来实现i2c设备的操作的。但i2c控制器驱动里也直接提供应用程序调用的接口,可用于实现应用程序直接读写操作的设备。 //注意这种方法只适用于仅需读写操作的简单设备. 如eeprom, dht12这些设备.使用这种方法前,除i2c控制器需要驱动好外,内核里也需要选上:make menuconfig ARCH=arm64 CROSS_CO

2017-11-30 15:25:33 1355 1

原创 17 H5里的i2c控制器驱动

i2c传输协议请参考: http://blog.csdn.net/jklinux/article/details/73920503H5里共有4个i2c控制器。Soc里的控制器都是由芯片厂家负责驱动好的. 在内核源码里相关的配置:make menuconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -> Device Drivers ->

2017-11-30 14:10:50 1581

原创 16 内核里gpio-keys设备驱动的设备树描述

此设备驱动适用于连接到一个具有中断功能的io口的按键驱动. 使用platform_device方法可参考:http://blog.csdn.net/jklinux/article/details/73828786此设备驱动在内核里配置:make menuconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Device Drivers --->

2017-11-27 15:55:56 8265 2

原创 15 内核里leds-gpio设备驱动的设备树方法

在linux内核里已提供了连接到gpio的led设备驱动,只需要通过platform_device或设备提供相应的硬件资源即可. 使用platform_device方法可参考: http://blog.csdn.net/jklinux/article/details/73850470内核里的leds-gpio设备驱动配置选项:make menuconfig ARCH=arm64 CROSS_COM

2017-11-27 14:57:48 8996

原创 14 在H5上实现的矩阵键盘驱动

矩阵键盘工作原理参考: http://blog.csdn.net/jklinux/article/details/73649292实现一个2x2的矩阵键盘驱动, 在设备树里的描述: mykeypad { compatible = "mykeypad"; /* 行线的io口, 以数组的形式列出 */ row-gpios = <&pio 0 12

2017-11-25 16:38:50 840

原创 13 linux内核里实现中断底半部处理的新方法

原实现底半部的方法参考:http://blog.csdn.net/jklinux/article/details/73550804现内核提供了新的中断请求函数,这个中断请求函数用于指定中断号为irq的中断顶半部和底半部的处理, 底半部是由内核线程来实现处理的(此底半部里可以作休眠的处理).int request_threaded_irq(unsigned int irq, irq_handler_

2017-11-25 10:14:39 661

原创 12 H5上实现dht12单总线工作方式的驱动

具体的硬件工作原理可参考:http://blog.csdn.net/jklinux/article/details/73460008dht12发出的二进制数据0的周期(从下降沿开始)大约78微秒, 数据1的信号周期大约120微秒.通过捕捉数据脚的下降沿中断的间隔时间来计算接收到的数据是二进制0和1. 但全志方案里的gpio控制器默认是使用32Khz的工作时钟信号,频率过低会丢失中断信号,需要把gpi

2017-11-24 14:45:29 1103

原创 11 H5上实现超声波测距模块的设备驱动

//超声波测距模块共有4个引脚: VCC, GND, Trigger, Echo//工作过程: 要开始测量时,Trigger引脚给10us以上的高电平.// Echo引脚会从开始测量到测量结束持续高电平(从上升沿到下降沿)// 测量的距离: (Echo持续的高电平时间 * 340M/s)/2PA12作超声波模块的trigger引脚, PA11作超声波的echo引脚.//注意电源需

2017-11-21 15:55:11 1174

原创 10 linux设备树的gpio和gpio中断应用实例

现把一个蜂鸣器模块的控制引脚接到板上的PL11, 当输出低电平时蜂鸣器响,低电平时就不响. H5芯片上有两个gpio控制器, PL组gpio口单独在一个gpio控制器上.PL组的gpio控制器在设备树里的描述: r_pio: pinctrl@01f02c00 { /* 可通过此基础区分gpio控制器 */ compatible = "allwinner,s

2017-11-20 17:08:19 6242

原创 09 linux设备树里的gpio应用

参考内核源码里的Documentation/devicetree/bindings/gpio/gpio.txt 在设备树里的节点设备需要使用到gpio口,则需要在一个或多个节点属性里提供gpio口的信息.关于gpio口信息的节点属性命名方式是: name-gpios , 其中name用于指此gpio口在设备里的具体用途. 如用于复位的io口,则属性可以命名为: reset-gpi

2017-11-20 12:31:13 10859

原创 08 在设备树里描述platform_device

在设备树的dts文件里,带有compatible属性的节点就是表示一个设备.在设备树里增加一个设备,则在内核里的dts文件里描述设备节点即可. 在H5方案里,则在arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts文件里。 如在dts文件里加入以下内容: mynodes@77885566 { /* 则创建出来的platform_de

2017-11-19 16:52:56 3970

原创 07 linux内核device-tree基础

设备树是用一个类似文本的dts文件来描述所有硬件相关的内容. dtb是dts文件编译后得到的文件. dtc命令可以把dts文件编译成dtb, 也可以把dtb文件反编译成dts.H5所用的dts文件在内核源码目录arch/arm64/boot/dts/allwinner/里.dtsi文件是多个方案的设备树共用部分,像c的头文件可在设备树文件里include引用. 现H5方案用的dts是: sun5

2017-11-19 15:49:54 1387

原创 06 H5直接使用网络文件系统

H5板上有提供有线网卡接口,可以在内核启动进入内存文件系统后,再进入网络文件系统。这样比使用sd卡上的文件系统更便于调试开发.// 在pc上准备好文件系统, 如我已把前面busybox编译得到并已配置好的_install整个目录复制并改名为"/disk3/h5fs"在pc上配置共享nfs目录, 修改/etc/export文件,增加:/disk3/h5fs *(rw,sync,insecure,n

2017-11-07 10:04:08 1155 1

原创 05 H5程序测试方法和not found的问题

为了方便测试程序,可以把源程序放在pc上的nfs共享目录里, 编译后,板上可以挂载此共享目录,直接执行在pc上编译出来程序了.// test.c#include <stdio.h>int main(void){ printf("hello arm64\n"); return 0;}如果用gcc编译出x86架构的程序,在板上执行会报下面的错误信息:./a.out: line 1:

2017-11-06 16:26:44 1749

原创 04 H5使用usb_otg接口作虚拟设备

此功能是使用linux内核usb子系统里gadget实现的. 配置内核,使用gadget里所需的功能模块://在内核源码目录下打开终端:make menuconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-Device Drivers ---> [*] USB support ---> <*> USB Gadget Sup

2017-11-06 13:15:15 2608 4

原创 03 H5用busybox制作64位文件系统

busybox的源码可以在官网https://www.busybox.net/downloads/下载. 这里下的版本是busybox-1.27.2.tar.bz2解包后,在终端进入busybox-1.27.2目录下操作:配置busyboxmake menuconfig CROSS_COMPILE=aarch64-linux-gnu-//备注: 在出现的配置界面里,按"/"键可查找所需命令的选

2017-11-06 09:52:52 1827

原创 02 H5 linux内核编译及启动

解压缩linux内核源码包后,在内核源码目录下打开终端://配置内核, 也就是指定使用什么架构,什么Soc, 什么板等信息. 配置文件在arch/arm64/configs目录下.make sunxi_arm64_defconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-//编译内核,生成Image镜像.make Image ARCH=arm64

2017-11-04 16:06:10 2737 1

原创 01 H5 uboot编译及烧写

nanopi_neo2 和 orange pi zero plus 2 都是基于全志H5芯片做的方案, 板上的硬件都是一样的, 参数: 它们的代码可以共用.uboot源码下载: git clone https://github.com/friendlyarm/u-boot.git内核源码下载: git clone https://github.com/friendlyarm/l

2017-11-04 10:45:09 3616 12

原创 ffmpeg 常用命令功能汇总

主要命令: ffmpeg [input_file_options] -i input_file [output_file_options] output_file 注意: "-i input_file" 表示输入的文件或设备. 输入文件或设备相关的配置必须在"-i input_file"前设定, 在之后写的是用于输出文件的配置. ffmpeg -version

2017-10-18 16:52:01 4250 1

原创 A33 Vstar开发板简述及BSP下载

BSP开发包下载链接: https://pan.baidu.com/s/1jIvJiOu 密码: p6w7开发板模样: 功能:

2017-09-27 00:56:09 3162 6

原创 Android Studio里的jni实现方法(二)

当使用第三方提供的jni库或不打算开源,方法一就不适用了。这里实现一个jni动态库与应用工程分离实现的方法.一 打开Android Studio, 菜单”Tools” – > “Android” –> “SDK Manager”在下图里选择安装”ndk”, 如已安装则跳过这步骤. Ndk安装完成后,会默认安装在”~/Android/Sdk/ndk-bundle/”目录里.二 因编译jni动态库时

2017-09-27 00:31:04 535

原创 Android Studio里的jni实现方法(一)

在Android Studio里可以直接创建支持c++代码的工程, 在如下图中选上即可直接在工程里实现jni的编码操作: 创建支持c++代码的工程后,工程目录里会有cpp子目里,里面会有native-lib.cpp文件, 可以里面编写jni操作的C++代码. 如在jni里实现用c++代码调用Linux系统的文件读写操作. 窗口上实现点击一个按钮调用jni把内容写入文件里,点击别一按钮调用jni把

2017-09-26 00:26:10 920

原创 06 Android里的多线程及Handler通信

Android里的多线程编程与java里完全一样,无非要不就是继承Thread类要不就是实现接口Runnable的方式来实现多线程.实现:点击窗口上的”newThread”按钮,创建一个子线程并分配线程的ID, 每个线程每隔3秒输出0 ~ 9. 界面布局:/* activity_my.xml */<?xml version="1.0" encoding="utf-8"?><android.sup

2017-09-25 14:03:02 466 1

原创 05 用xml文件可视化设计窗口布局

前面一直用代码来设计窗口的布局,每次修改后,只有程序执行时才可看到设计的结果,而且当窗口的控件较多时,写代码的方式较为麻烦了。 所以Android里还提供了用xml文件,用可视化的方式来设计窗口布局.首先还是先用向导创建一个”Add No Activity”的项目, 然后菜单”File” –> “New” –> “Class”创建一个窗口类:/* MyActivity.java */package

2017-09-24 21:49:30 6497

原创 04 Activity窗口间的切换及参数的传递

在Android系统里,App间的通信和一个App内的Activity间的通信都是由Intent类对象来完成的. Android是一个高度中央集权制管理的系统, 基本上所有的操作都是向系统发出请求,由系统来完成的. 这种向系统的请求操作就是由Intent来实现.Intent负责描述向系统请求操作的具体行为,涉及的参数及附带的数据等信息, Android系统根据Intent的描述信息作相应的操作。

2017-09-24 18:20:33 582

原创 03 Button对象的事件

当窗口或控件的状态发生时会自动触发调用相应的事件函数。 在Android里,这些事件是由各种监听器类来管理实现的,如一个按钮对象可以setOnClickListener设置在被单击时触发的监听器. 监听器是一个由抽像函数组成的接口, 具体的事件处理代码就写在抽像函数的实现里。一个按钮对象可以设置的监听器有: 监听器的用法基本上就是创建一个监听器对象,并实现它里面的抽像函数,再由按钮对象来设置使

2017-09-19 21:34:45 657

基于QCamera, QTcpServer实现网络视频监控

基于QCamera, QTcpServer实现网络视频监控. 支持多客户端. 文档说明: http://blog.csdn.net/jklinux/article/details/75072993

2017-07-13

qt mp3录音程序

qt里简单的mp3录音程序,使用lame编码库. 程序执行时开始录音并编码成mp3存放在”/my.mp3”, 直到程序退出执行 说明文档: http://blog.csdn.net/jklinux/article/details/72815790

2017-05-31

ffmpeg桌面图像h264编码并封装avi

ffmpeg桌面图像h264编码并封装avi. http://blog.csdn.net/jklinux/article/details/72519344

2017-05-19

ffmpeg摄像头数据h264编码并封装avi

ffmpeg摄像头数据h264编码并封装avi http://blog.csdn.net/jklinux/article/details/72478004

2017-05-18

原创 qt 组播实现的屏幕共享程序 

原创qt 组播实现的屏幕共享程序. 更多例子: blog.csdn.net/jklinux 

2017-05-16

原创 qt数据库操作简例

原创 qt数据库操作简例 教程: http://blog.csdn.net/jklinux/article/details/72081872

2017-05-15

qt网络组播程序 

qt网络组播程序 

2017-05-15

qt实现的tcp网络聊天室

qt实现的tcp网络聊天室

2017-05-14

qt录屏程序源码

qt录屏程序源码

2017-05-12

qt贪吃蛇游戏源码

qt贪吃蛇游戏源码

2017-05-12

qt贪吃蛇源码

2017-05-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除