- 博客(503)
- 资源 (61)
- 收藏
- 关注
原创 在Windows下烧写全志A33系统镜像
虽然使用原生Linux系统进行开发部署可以获得最好的性能,但是Linux对于目前PC的兼容性并不尽人意,所以很多人喜欢在虚拟机中的Linux系统进行开发,并在Windows上进行部署。所以今天尝试在Windows 10下烧录全志A33系统镜像。软件准备PhoenixSuit这是Windows下用于烧写Allwinner固件的工具,其中包含了USB烧写模式的驱动。https://c...
2019-06-25 00:08:11
7265
1
原创 【Ubuntu】使用grub2挂载NFS根文件系统(rootfs)
经常调试arm开发板的同学应该比较熟悉uboot,它可以使用tftp自动下载内核并通过nfs挂载rootfs。其实,作为x86平台常见的bootloader,grub也可以做到通过nfs挂载rootfs。安装grub2目前新版的ubuntu都预装了grub2,如果希望手动编译安装,可以访问grub官网下载最新的源码。本文主要介绍通过ubuntu来安装。启动ubuntu。你...
2018-08-20 10:45:54
2923
原创 【全志A33】解决文件系统错误
这个平板第一次开机就给我了一个惊喜,文件系统不可写,WTF,这还玩啥。但是查了一下内核日志,发现这事不简单~~~内核日志[ 1.690765] EXT4-fs (nandd): barriers disabled[ 1.698331] EXT4-fs (nandd): mounted filesystem with ordered data mode. Opt...
2018-05-05 16:11:20
3426
2
原创 【全志A33】Linux Qt编译环境搭建
之前参加某嵌入式培训机构,送了一个全志A33平台的平板,一开始看到全志平台,其实我是拒绝的 (¬_¬),不过鉴于物尽其用(钱包空空)的原则,还是免为其难的玩耍一番。系统环境Ubuntu 17.10i7 4702mq12G内存500G硬盘# 基本软件环境sudo apt install build-essentialsudo apt install git# ...
2018-05-03 21:26:38
3442
原创 【全志A33】在Ubuntu下烧录程序
最近从箱底翻出来一个平板,是当时参加一个培训机构赠(购)送(买)的。不过工作之后就没碰过了,附有完整的Android和LinuxQt的源代码,全志A33平台,还是挺有可玩性,所以就搭建了开发环境,因为给的文档里说是在Windows下进行烧录。但是我使用的纯Linux环境,而且烧写程序无非就是向一个USB设备写数据,不存在系统限制,所以Google到了全志的一个Linux平台烧录工具——Liv...
2018-04-30 21:07:41
6021
4
原创 【游戏手柄】如何在PC上使用非XBOX手柄玩游戏
PC上许多游戏其实都可以使用手柄玩,如果使用XBOX手柄连接,游戏就会自动切换到手柄模式,但是但是XBOX手柄动辄几百块的价格让我这种非硬核游戏玩家感到索然无味,高中时买过一款通威的USB游戏手柄,工作后买过飞智的wee拉伸手柄,他们正常情况下都无法直接玩基于XBOX手柄的游戏,下面就分享一下解决方法。 实现原理手柄其实并不神秘,跟键盘一样,每个按键都有一个key...
2018-04-22 20:09:31
17215
8
原创 【Android】Phoenix OS(凤凰系统)启用root权限
最新版(2.5.9.64)的Phoenix OS将开发者选项中的root权限开关去掉了,本篇教程的来源是XDA论坛的[Root] How to root Phoenix OS without replacing system.img实现原理跟Android手机的卡刷一样,下载super su的卡刷包,但是因为电脑并不能真的卡刷,所以需要手动执行卡刷包中的脚本。并且Phoenix...
2018-03-03 20:38:46
22689
原创 【Linux内核驱动】编译Linux下mt7612u的驱动
最近项目中使用了一个wifi模块,主控是mt7612u,为usb接口。使用的Linux版本为2.6.35,在编译驱动的过程中遇到不少问题,特在此记录。获取源码MTK官网驱动。包含Windows、Linux以及Mac下的驱动。我修改的Github驱动。添加新的Platform在源码中内置了一些硬件平台的配置信息,如果没有适配于你所使用平台的信息,需要手动添加配置信息。
2018-01-20 22:16:30
14642
3
原创 【Linux网络内核】常用函数总结
以下函数全部基于3.10.90版本的内核,对于更老或者更新的内核,可能会有所区别。用于LOG输出的宏LOG宏的使用方式与printk完全相同可以自定义tag,用于在dmesg输出的日志中过滤出属于本模块的信息可以通过debug宏控制是否输出日志,当关闭日志后,所有日志代码不会被编译#define debug 1#define MOD_TAG "custom tag"
2018-01-20 13:16:30
925
原创 【树莓派】在Raspbian下将wifi中继为有线网络
让树莓派进行wifi中继,最简单的方式是安装OpenWrt或者LEDE,然后通过Luci界面可以方便的进行操作,前提是你的无线网卡能够在OpenWrt下顺利驱动。 由于我需要中继5G信号,所以选购了一款支持双频的USB无线网卡,主控为RTL8812AU,Realtek实际上间接提供了Linux下网卡驱动的源码,在Github上可以搜索到很多,但是无奈这个驱动交叉编译完成后insmod到Ope
2018-01-06 00:25:19
12955
4
原创 【OpenWrt】使用SDK编译Linux内核驱动
很多路由器都有USB接口,当路由器搭载OpenWrt(LEDE)系统后,理论上可以使用任何USB接口的设备,常见的设备比如各种存储设备、USB网卡等。但是如果内核中没有集成相关的驱动,并且源中也没有提供该设备的kmod,那么就需要自己寻找驱动源码并编译为驱动模块。 OpenWrt官方提供了一套编译系统,使用feed/package模式,但是如果不是专门开发OpenWrt,熟悉这一套开发环境需要
2018-01-01 17:01:38
5031
1
原创 【Android】NDK的使用常见问题
Android提供了NDK工具用以编译能够Android设备上运行的C/C++程序,本质上就是交叉编译,下面给出几篇关于NDK相关的文章。教程生成设备专用的toolchain在 ${NDKROOT}/build/tools 下有两个脚本:make_standalone_toolchain.py 和 make-standalone-toolchain.sh,这两个脚本的功...
2017-12-27 13:22:06
2093
1
原创 【Ubuntu】Ubuntu 16.04 安装后优化
精简系统sudo apt-get updatesudo apt-get purge libreoffice-commonsudo apt-get purge unity-webapps-commonsudo apt-get purge thunderbird totem rhythmbox empathy brasero simple-scan gnome-mahjongg aisl...
2017-12-12 09:55:52
1061
原创 【Linux网络内核】优秀文章整理
学习Netfilter框架需要对Linux网络协议栈有较深的理解,此处整理了一些优秀的文章。实践出真知,要想真的学会,还是一步一步写代码吧。Netfilter框架相关netfilter/iptables (一) 基础概念netfilter/iptables (二) Netfilter hook 数据结构netfilter/iptables (三) 注册和注销Netfilter
2017-12-07 19:56:12
395
原创 【Linux内核驱动】搭建Android驱动交叉编译环境
开发嵌入式Linux驱动模块的时候,搭建交叉编译环境是至关重要的一环,它决定了代码可以在哪些设备上运行。在开发Android驱动的时候,同样需要搭建交叉编译环境,Android使用一套独立的开发套件——NDK。什么是NDKNDK是一系列工具的集合。NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。N
2017-12-06 13:56:13
1271
原创 【Linux内核驱动】模块编译技巧
如何指定处理器架构和交叉编译器版本?export ARCH=armexport CROSS_COMPILE=/usr/arm/arm-linux-如何编译源码目录中的特定模块export SUBDIRS=<module dir>如何设定内核的version magic 有时候我们无法获取设备的内核源码或者获得的源码与设备中的内核版本不同,此时如果安装内核模块会提示Exec format err
2017-12-05 13:53:28
534
原创 【Qt Creator】下载链接
不知道Qt官方出于什么目的,在官网上找不到开源版本的Qt的下载链接了,这里直接给出其下载链接。资源站点根目录download.qt.io/Qt Creator下载目录http://download.qt.io/official_releases/qtcreator/
2017-11-26 19:56:58
462
原创 【Linux内核驱动】按键中断
中断注册函数:request_irqrequest_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev) 参数1:irq,中断号。(和平台架构相关,结合datasheet以及平台文件) 参数2:中断处理函数 参数3:中断标记。
2017-11-19 15:14:56
943
原创 【Linux内核驱动】编写I2C外设驱动读取触摸屏固件版本
编写I2C外设驱动步骤注册I2C设备,一般在板级文件中,定义i2c_board_info注册I2C驱动:i2c_register_driver,i2c_del_driver利用i2c_client中的addr(设备地址)和adapter(主机驱动)实现I2C数据传输:填充i2c_msg并调用i2c_transfer#include <linux/kernel.h>#include <lin
2017-11-18 17:04:06
1168
原创 【Linux内核驱动】基于platform总线的miscdevice驱动(LED)
驱动模块编写步骤:调用所需的内核函数,同时为所需的结构体命名补全所需的结构体,使用vim -t查找结构体声明通过结构体声明所在的文件补全头文件#include <linux/kernel.h>#include <linux/module.h>#include <linux/platform_device.h>#include <linux/miscdevice.h>#include
2017-11-17 20:57:44
655
原创 【Linux内核驱动】最小内核模块模板
#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");MODULE_AUTHOR("colorfulshark@hotmail.com");static int xxx_init(void){ printk(KERN_ALERT "module xxx init\n")
2017-11-07 21:26:57
623
原创 【Android】为App所在的进程指定网络
最近开发一个项目,要求一个安卓设备同时接入两个无线网络。如果直接使用两块无线网卡,在驱动和应用层以及安卓框架中都会遇到问题,因此,选择了一款同时具备有线网卡和无线网卡的安卓开发板,然后再使用一块OpenWrt核心板将有线网络转换成无线网络,并实现透传。开发App的时候,发现安卓会为App选择一个默认优先级最高的网络,因此同时连接有线和无线时,应用的数据默认不走有线网口,下面介绍一种解决方案。代码i
2017-11-02 20:44:59
5103
2
原创 【Linux内核驱动】字符设备驱动框架模板
#include <linux/kernel.h>#include <linux/module.h>#include <linux/fs.h>#include <linux/cdev.h>#include <linux/device.h>#include <linux/err.h>int xxx_open(struct inode *inodp, struct file *filp);
2017-09-05 11:34:30
1234
原创 【Ubuntu】使用Archive Manager解压RAR显示Parsing filters is unsupported.
问题原因系统中未安装RAR文件的压缩/解压管理工具,而Archive Manager依赖于这些工具来解压/压缩文件。解决方法安装unrarsudo apt install unrar
2017-08-18 16:00:29
7646
4
原创 【LintCode】Pattern(C语言实现)
题目描述Given a sequence of n integers a1, a2, …, an, a 132 pattern is a subsequence ai, aj, ak such that i < j < k and ai < ak < aj. Design an algorithm that takes a list of n numbers as input and checks
2017-08-08 20:17:57
1347
原创 【LintCode】Expression Expand
题目描述Given an expression s includes numbers, letters and brackets. Number represents the number of repetitions inside the brackets(can be a string or another expression).Please expand expression to be a
2017-08-08 16:48:13
538
原创 【系统移植】基础理论与环境搭建
系统组成windows系统 BIOS(引导系统) windows系统核心 应用程序 驱动 文件系统(程序 就是维护我们自己存储文件)linux系统 bootloader(引导系统) kernel(linux内核) 应用程序 驱动 文件系统开发环境交叉工具链tftp服务器nfs服务器ubuntu系统(命令) linux特点linux系统有硬件限制linux系
2017-08-04 22:06:30
368
原创 【ARM】Exynos 4412 IIC(I2C)总线详解
概述Exynos 4412支持四路多主机I2C串行总线,为了使连接总线上主机和外设之间实现数据传输,使用了一条SDA(Serial Data Line)线和一条SCL(Serial Clock Line)线,这两条都支持双向传输。当I2C总线处于多主机模式时,多个Exynos 4412处理器都可以与从设备收发数据。I2C总线上的主设备负责启动和结束一次数据传输。Exynos 4412的I2C总线使用
2017-08-02 18:50:08
2748
原创 【ARM】Exynos 4412 中断控制器相关计算
由于引入了GIC,在设置中断控制器的时候不免产生各种计算,各种寄存器编号换算比较繁琐,在此提供一种计算方式。GIC处理中断的流程GIC中由成百上千的寄存器,要理清寄存器的设置思路,必须要理解GIC是如何处理中断源发来的中断信号的。首先,GIC有一个全局开关——ICDDCR。这个寄存器决定了GIC是否会处理外围的中断信号,因此必须先将它打开。中断信号到来后,第一个要面对的是GIC的中断源屏蔽,这
2017-08-01 17:53:48
1103
原创 【ARM】Exynos 4412 中断理论分析
中断在计算机体系结构中具有重要的地位。要进行中断编程,首先要清楚发生中断时程序的跳转流程,然后再根据实际的硬件体系结构编程。中断跳转流程首先,中断是异常的一种,因此,中断发生时,Soc实际上是按照异常的标准处理流程来执行的。由于CPU上电之后执行的第一条代码是汇编代码,所以我们需要在汇编程序中完成异常向量表的装载,堆栈的初始化等操作,才能执行C语言的程序。下面是已经启动的系统在中断发生时所执行的操
2017-07-31 22:02:37
1130
原创 驰为 Hi8 Pro remix2.0(技德) 刷机及root
这个平板刷win10难用,刷安卓更难用,早就想刷remix,官方终于放出了固件,估计是测试版,目前没发现什么bug准备工具:typec数据线,刷机工具跟原来一样,最关键的固件(点我下载),里面有固件,刷机包以及刷机教程刷机方式还是跟原来一样,百度云里面也有教程,这里就不再赘述,刷完之后因为分区只有9G,如果想要单系统,那么参考这篇文章进行手动分区。本篇文章主要讲述root方式,因为刷了remix后有
2017-07-30 07:57:16
15736
5
原创 【ARM】Ubuntu下使用Qt Creator创建交叉编译项目
我总是乐忠于尝试各种不同的工具来完成相同的事情,使用不同工具的过程中我能感受到每个开发者不同的思路和设计思想。之前我在eclipse下搭建了交叉编译项目的环境,这次试试在Qt Creator下完成相同的事情。这件事并不是没有任何意义,Qt Creator拥有更小的安装包和更快的运行速度,代码提示功能也比eclipse+CDT更加智能。新建项目因为我们不是要开发一个app,因此Qt Creator
2017-07-29 20:40:01
5314
1
原创 【ARM】Ubuntu下使用minicom+ckermit实现串口调试
Windows下有很多好用的串口调试工具,SecureCRT、Putty、超级终端,各个操作简单,功能强大。但是到了Linux下,除了Putty有一个官方的版本,其它的GUI工具都是丑八怪,有的几年都没更新过了。 Ubuntu下的Putty是一个超级简化版,没有文件传输功能,只能作为一个终端用,Pass。 最终选择了拥有较好口碑的minicom,但是民间有个说法:minicom跟u-bo
2017-07-28 21:36:33
1246
原创 【ARM】控制寄存器的几种方式
定义一个指向寄存器地址的指针原理:利用强制类型转换将寄存器的地址强转为一个指向无符号整形的指针,并将其赋给一个指针变量。之后的操作可以转换为对指针的操作。unsigned int * GPX2CON = (unsigned int *)0x11000c40;* GPX2CON = 0x10000000;利用宏定义原理:与上一种方法原理相同,最终都是对一个指向无符号整形的指针进行操作。不同之处在于强转
2017-07-28 18:58:48
1847
原创 【ARM】Ubuntu下使用eclipse创建交叉编译项目
交叉编译项目中最重要的就是交叉编译工具链和Make环境的设置,因为eclipse的设置项非常多,所以本片教程旨在快速建立交叉编译项目。 注意:eclipse需要安装CDT插件新建C工程Project name是你的工程的名称;Project type选择Excutable下的Empty Project;Toolchains必须选择Cross GCC下一步可以直接保持默认。这一步非常重要
2017-07-28 15:41:57
6159
原创 【ARM】LED实验——eclipse
实验步骤在设备原理图中找到LED的电路:分析电路,可知当CHG_COK为高电平时,LED点亮;当CHG_COK为低电平时,LED熄灭。在核心电路原理图中找到CHG_COK引脚:分析核心板的引脚图,可以知道,CHG_COK由GPX2_7控制,这是一组GPIO引脚中的一个。查询芯片手册中GPX2这一节,可以得知控制GPX2组中GPIO引脚的寄存器地址以及功能定义,如图:编写汇编程序控制寄存器
2017-07-28 14:21:52
686
原创 【ARM】基本汇编指令——Keil
area reset, code ; 定义一个代码段叫reset;/*汇编文件中的符号*/ ;1.指令:编译完成后作为一条指令存储在内存单元当中,CPU执行时能完成一定的操作 ;2.伪操作:不会生成代码也不会占用内存,告诉编译器怎样编译 ;3.伪指令:本身不是指令,编译器在编译的时候将其替换成CPU能识别的指令;/*指令*/ ;1.数据操作指令:对数据进行逻辑
2017-07-28 13:48:03
7804
原创 【ARM】初识ARM——硬件理论基础
逻辑1和0 :数字电路中用高、低电平来表示逻辑1和0二极管具有单向导电性 :正向导通,反向截止三极管具有开关特性 NPN型:电压方向C->E 基极是高电平时CE导通 PNP型:电压方向E->C 基极是低电平时CE导通电路图如何让查找一个元器件: 搜索丝印通过目录电路图中网络标号相同的节点在电气上是连接在一块的位操作 unsigned int a; a为32位无符号整型 将a
2017-07-28 11:19:15
694
原创 【WineHQ】卸载已安装的软件
WineHQ会在主目录下生成三个隐藏的文件夹 .wine、.local、.config ,默认是看不到的,通过按快捷键 ctrl+H 才能显示出来。进入 ~/.wine 文件夹可以看到 drive_c 文件夹,这是wine自动生成的虚拟 C盘,里面有类似windows系统盘的目录结构,在里面找到需要卸载的软件文件夹删除;接着找到 ~/.local/share/applications/wine/P
2017-07-23 20:51:36
2448
sourceinsight4093-setup.zip
2018-03-26
secureCRT 8.1.4 x64 带注册机
2017-09-20
程序员面试宝典(第5版)第二部分
2017-08-10
程序员面试宝典(第5版)第一部分
2017-08-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人