自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mkelehk的专栏

要真懂

  • 博客(209)
  • 资源 (27)
  • 收藏
  • 关注

原创 xilinx低延时视频编解码方案

xilinx的Zynq® UltraScale+™ MPSoCs(EV系列,ZCU106开发板)有一个视频编解码硬核VCU,能实现多种profile/level的H264/H265编解码能力,最高支持一路3840x2160@60或4096x2160@60 yuv422的分辨率,支持yuv422 10 bit HDR等,详细请参考《PG252》文档。 总共支持4种不同延时的编解码能力: VCU的软件框架使用了Gstreamer跨平台多媒体处理框架,可...

2020-09-18 00:03:20 7900 6

原创 RK3399 android8.1 app获取root权限

这里指的是app能利用Runtime.getRuntime().exec("su")或者ProcessBuilder()等创建一个新的具有root权限的shell终端进程,而不是app本身拥有root权限。使得app自身具有root权限这个我没有研究过,但使得app自身具有system权限则可以使用签名,在Android Framework 之HelloWorld(三)里有描述。 我是参考了[九鼎RK3399Pro] Android 8.1 系统定制给用户root权限这篇文...

2020-08-23 22:12:13 3007

原创 Android Framework 之HelloWorld(三)

本来是要写一个linux驱动,用于控制led灯的,但考虑到nanopc-T4的内核已经帮我们配置好设备树,已经可以利用/sys/class/gpio操作gpio了,所以没必要再造轮子了! 在shell里,可以利用下面的命令控制Led灯的亮与灭:#导出GPIO1_A0管脚echo 32 > /sys/class/gpio/export#让GPIO1_A0管脚作为输出使用echoout > /sys/class/gpio/gpio32/direction...

2020-08-23 14:58:35 653

原创 Android Framework 之HelloWorld(二)

因为HelloWorld的功能是点亮一盏Led灯,因为功能简单,我们就不使用硬件访问服务了,直接使用JNI的方式操作底下硬件。JNI不是Android特有对的,而是java语言自带的特性。有兴趣可以查阅jni的官方接口规范文档。 我们先写java端,...

2020-08-23 12:35:03 289

原创 Android Framework 之HelloWorld(一)

我用是友善之臂的NanoPC-T4开发板,CPU是瑞芯微rk3399,搭载android8.1版本,之后的实验都基于此平台。开发板的wiki百科在http://wiki.friendlyarm.com/wiki/index.php/FriendlyThings_for_RK3399/zh,有兴趣的可以阅读一下。我不是打广告,我都是二手市场淘的,别人不要我便宜买了。 这个Hellworld的最终功能是操控一个gpio管脚,控制外接led灯的亮和灭。 理论...

2020-08-19 19:24:15 329

原创 Android studio4.0.1尝鲜

Android studio4.0.1是目前最新稳定版,可到https://developer.android.google.cn/studio下载安装。在能上网的电脑上安装Android studio似乎很简单,在离线环境下安装则很痛苦,尤其是gradle这套环境,Android studio4.0.1里面很多配置选项跟之前的版本不一样了,网上很多资料都过时了,而且官网给出的offline-gmaven-stable.zip与Android studio4.0.1版本也不匹配,在C:\Us...

2020-08-19 19:04:47 975

转载 C盘“瘦身”计划

为什么给C盘分了100多个G,依然不够用?为什么整个128G的固态硬盘作为系统盘,不到一年C盘就用掉90%空间?你是否有这样的疑问,那么请细细看这篇文章,事实证明确实能够让你的C盘真正清理。先来介绍几个好朋友:名称 清理率 风险性 Windows 自带磁盘清理工具 10%左右 极低 开源清理工具 Dism++ 12%左右 低 磁盘分析工具SpaceSniffer 8%左右 中 WindowsInstaller目...

2020-08-16 13:59:07 265

原创 evpp网络库代码分析(二)

EventLoop类的实现。 EventLoop类主要实现了如下几个功能:提供libevent2的事件循环,提供Ttimer功能,

2020-08-02 19:05:49 918

原创 设置Hi3536的HDMI2.0自定义显示时序

Hi3536的SDK定义了一些常见的分辨率,诸如3840X2160@30/1920X1080@60/3840X2160@60等:typedef enum hiVO_INTF_SYNC_E{ VO_OUTPUT_PAL = 0, VO_OUTPUT_NTSC, VO_OUTPUT_960H_PAL, /* ITU-R BT.1302 960 x 576 at 50 Hz (interlaced)*/ VO_OUTPUT_960H...

2020-07-14 11:36:07 2682

原创 调整Hi3536的VO显示延迟

Hi3536的时钟管理可以参考《Hi3536 H.265解码处理器用户指南.pdf》的“3.2.3 时钟资源分布”章节。其中,与视频相关的PLL是vpll0和vpll1。当MPP使用VHD0作为显示设备时,内部使用vpll0,涉及的寄存器为PERI_CRG_PLL4和PERI_CRG_PLL5,基地址为0x1204_0000:和可以理解为根据上述两组寄存器,就可以微调VO输出的频率,文档上有计算公式:举个例子,假设输出1920x1080@60,理论上像...

2020-07-13 23:12:08 1828

原创 evpp网络库代码分析(一)

evpp是奇虎360内部使用的开源多线程网络库,集tcp/udp/http多种协议的服务器和客户端支持。github代码路径是:https://github.com/Qihoo360/evpp,可以不依赖boost库,使用现代c++14语言(evpp/invoke_timer.cc的lambda表达式使用到了c++14的特性)进行编码。本项目高度参考了muduo网络库,而底层使用现成的libevent库作为事件驱动库,典型的一个reactor网络编程模式的例子,本文就是通过分析evpp源码来...

2020-07-04 20:46:46 2485

原创 linux usb gadget驱动详解(五)

现从fsg_bind()讲起。//不失一般性,删掉错误处理和configfs相关代码static int fsg_bind(struct usb_configuration *c, struct usb_function *f){ struct fsg_dev *fsg = fsg_from_func(f); struct fsg_common *common = fsg->common; struct usb_gadget *gadget = c->cdev-...

2020-07-04 12:46:40 4208 7

原创 linux usb gadget驱动详解(四)

现从msg_bind()开始讲起,

2020-07-04 09:06:24 5486 1

原创 linux usb usbip驱动详解(六)

我们开始讲解usbip-host驱动原理。 我们前面一直都没有讲devid的作用,本文会详细讲解。 usbip-host驱动源文件大多以stub_*命名,我们先看stub_main.c的usbip_host_init()函数:static int __init usbip_host_init(void){ int ret; init_busid_table(); stub_priv_cache = KMEM_CACHE(stub_priv...

2020-07-02 22:59:55 2082

原创 linux usb usbip驱动详解(五)

最后讲解usbip-host驱动

2020-07-02 19:57:07 2236 1

原创 linux usb usbip驱动详解(四)

我们先讲解vhci-hcd驱动。

2020-07-02 17:47:23 2601 1

原创 linux usb usbip驱动详解(三)

usbip协议很简单,总共有4对:OP_REQ_DEVLISTOP_REP_DEVLISTOP_REQ_IMPORTOP_REP_IMPORTUSBIP_CMD_SUBMITUSBIP_RET_SUBMITUSBIP_CMD_UNLINKUSBIP_RET_UNLINK分为控制命令和数据传输命令两大类。控制命令主要是用来list设备或者导出设备:在C/S模式中基本都是client发出请求,譬如当client在“usbip attach -r 192.168.100.191 -b 2-

2020-07-02 01:53:48 3017 4

原创 linux usb usbip驱动详解(二)

终于来到usbip驱动代码分析了! 我们在做产品时,通常是先讨论方案、制定协议、编码和测试。 usbip的方案是行得通的,它是从URB对象获取信息,然后从tcp发送出去的,URB是linux usb子系统里面用于抽象usb通信而精心设计的对象,只要server和client两边在恰当的时机分别隔断各自系统的usb通信流程,然后巧妙地交换数据,各自系统都察觉不到,就像黑客利用钩子函数做rookit。如果server和client都是linux系统,就很容易理解了,毕竟部...

2020-07-01 21:54:11 1793 1

原创 linux usb usbip驱动详解(一)

在分析usbip驱动前,我们先来学习一下usb总线在linux系统下的表示。我们知道在linux中,/proc和/sys这个两个文件系统包含了很多有用的信息,所以usb的信息自然也少不了利用他们来展示。1,我们在《linux usb gadget驱动详解(三)》知道了ls /sys/class/udc 能查看系统注册了的udc驱动。2,cat /proc/devices能查看当前系统注册了哪些驱动,linux系统为每个已注册的设备驱动分配一个“主设备号”:Character devices

2020-07-01 16:57:24 7708 16

原创 Pycharm搭建python代码阅读环境

阅读别人写的python工程,只是使用notepad++的话不太方便,毕竟我们希望它能跳转到定义处,查看方法,看方法的说明,甚至运行调试环境。 因为编译环境在ubuntu下,Pycharm刚好能满足要求,而且有免费版提供。 但是需要配置环境路径,不然Pycharm会找不到包和模块,参考网上的做法,成功创建一个阅读python工程的环境:1,创建好工程(可参考其他资料,这里不再赘述)2,先File->Settings..弹出设置框。2,...

2020-06-09 00:21:34 453

转载 几种TCP连接中出现RST的情况

应该没有人会质疑,现在是一个网络时代了。应该不少程序员在编程中需要考虑多机、局域网、广域网的各种问题。所以网络知识也是避免不了学习的。而且笔者一直觉得TCP/IP网络知识在一个程序员知识体系中必需占有一席之地的。在TCP协议中RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。其实在网络编程过程中,各种RST错误其实是比较难排查和找到原因的。下面我列出

2020-05-30 12:48:48 816

转载 Thrift语法参考

1、TypesThrift类型系统包括预定义基本类型,用户自定义结构体,容器类型,异常和服务定义(1) 基本类型bool: 布尔类型,占一个字节byte: 有符号字节i16:16位有符号整型i32:32位有符号整型i64:64位有符号整型double:64位浮点数string:未知编码或者二进制的字符串注意:thrift不支持无符号整形,因为很多目标语言不存在无符号整形(比如java)(2)容器类型List<t1>:一系列t1类型的元素组成的有序.

2020-05-25 11:31:13 736

原创 加强gcc的警告信息

CFLAGS = -g3 -Wall -Wextra -Werror -Wno-unused-function -Wno-unused-parameter -D_GNU_SOURCECXXFLAGS = -g3 -std=c++11 -Wall -Wextra -Werror -Wno-unused-function -Wno-unused-parameter

2020-05-21 19:01:08 237

原创 linux内核中断子系统基础知识

韦东山:一文看看尽linux对中断处理的前世今生韦东山:剥丝抽茧分析linux中断系统的重要数据结构韦东山:在Linux设备树(DTS)中指定中断_在代码中获得中断

2020-05-15 10:40:37 163

原创 Xilinx Artix7视频裁剪问题探讨

参考:https://www.cnblogs.com/jamesnt/p/3535073.html《ug472_7Series_Clocking.pdf》《pg065-clk-wiz.pdf》为了将一个3840x2160@30的视频裁剪为4路1920x1080@30输出,我使用了Xilinx 的XC7A35T-2FGG484C进行裁剪,用4颗HDMI1.4a Transmitter(s...

2020-04-17 14:16:29 624

原创 QT5的usb键鼠热插拔支持

有两种方案:1.利用系统的udev进行热插拔检测,QT本身是支持的,configure时默认是使用udev的,或者显式地加入选项也行“-libudev”,但嵌入式系统的udev要不版本太低,要不就规则文件描述不完整。所以很多嵌入式系统都不支持这种方式,除非你的文件系统移植了systemd,systemd有一个systemd-udev的程序专门用于处理热插拔事件,而且systemd文档齐全,不像...

2020-03-05 09:50:09 2681

转载 虚拟机VMware安装Kali Linux

转载自https://www.cnblogs.com/henuzyx/p/9144969.html本文讲解如何在虚拟机上安装Kali Linux,希望对大家有所帮助。 准备:一台电脑,VMware(VMware安装教程)一、下载系统镜像文件1.首先下载系统镜像,进入kali官网,在Downloads中选择Download Kali Linux,如下图所示。2....

2020-02-04 11:21:52 461

转载 Python网络爬虫实战:根据天猫胸罩销售数据分析中国女性胸部大小分布

转载自https://www.cnblogs.com/nokiaguy/p/9618475.html本文实现一个非常有趣的项目,这个项目是关于胸罩销售数据分析的。是网络爬虫和数据分析的综合应用项目。本项目会从天猫抓取胸罩销售数据,并将这些数据保存到SQLite数据库中,然后对数据进行清洗,最后通过SQL语句、Pandas和Matplotlib对数据进行数据可视化分析。我们从分析结果中可以得出很...

2020-02-04 11:15:34 762

原创 Linux实现的IEEE 802.1Q VLAN

https://blog.csdn.net/dog250/article/details/7354590

2020-01-16 16:04:03 330

转载 解决Linux内核问题实用技巧之 - Crash工具结合/dev/mem任意修改内存

Linux内核程序员几乎每天都在和各种问题互相对峙: 内核崩溃了,需要排查原因。 系统参数不合适,需要更改,却没有接口。 改一个变量或一条if语句,就要重新编译内核。 想稍微调整下逻辑却没有源码,没法编译。 ... 解决每一类问题都需要消耗大量的时间,特别是重新编译内核这种事情。于是,每一个Linux内核程序员或多或少都会掌握一些Hack技巧,以节...

2020-01-16 14:43:34 1716

原创 开源硬件USB抓包及协议分析工具分享

USB抓包工具属于小众产品,开源的就更少了!!USB抓包工具分为纯软件的和硬件的两种,纯软件usb抓包工具需要在系统能正确枚举usb设备的前提下才能让内核的钩子函数捕抓到数据,而后者在usb不正常时也能捕捉到链路数据(令牌包等),属于更底层的抓包方式。一、我用过的并且好用的纯软件USB抓包工具有:1.USBlyzer(能很方便的帮你分析出HID报告描述符等等)2.Bus Hound...

2020-01-10 18:43:23 27870 5

转载 还在收集资料?我这里有个github汇总

国内程序员都喜欢收集资料,但是又不看,github是重灾区。更有莫名其妙fork的,让人不得要领。这些资料其实也代表了收集者的一个思路,还是有不小参考价值的。这里,我整理了一下java后端的一些资料,算是送给大家的福利吧。收集了不看,也无所谓了(排名不分先后)。如何贡献?我把这些信息放在了github上,做索引用。如果你有其他的高质量仓库,但star数不高的,欢迎提交issues。内容包...

2019-11-22 07:41:41 285

原创 tty终端设置杂记

使得终端重定向到串口/dev/ttyAMA2microcom -t 10000 -s 115200 /dev/ttyAMA2关闭/开启终端的回显stty -echostty echosetconsole,百度百科说“setconsole [video][serial][ttya][ttyb],设置系统终端”,我没有用过!...

2019-11-15 22:58:32 561

原创 海思交叉编译一些工具和库(iperf3/openssl/libevent/boost/thrift等)

为Hi3559AV100编译iperf3时./configure --host=aarch64-himix100-linux --prefix=`pwd`/install出现如下报错:/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../lib/gcc/aarch64-linux-gnu/6.3.0/../../../../...

2019-11-15 10:36:34 2275 1

原创 MII和RGMII的区别

上图是am3358芯片的物理层接口,RGMII和MII,可以看出管脚数量不一样,以及Clk的方向不一样,MII的Rx和Tx方向的时钟都是由PHY或者FPGA提供的,而RGMII则是谁发数据谁提供时钟,而且是双沿采样的。...

2019-11-14 17:23:54 6943

原创 ARM交叉编译工具链的下载与安装

ARM的GNU交叉编译工具链下载链接:https://launchpad.net/gcc-arm-embedded/+download 因为海思Hi3559AV100平台SDK编译用到了ARM cortexM7核的gcc,根据文档说明,需要安装gcc-arm-none-eabi-4_9-2015q3.tgz,但我的SDK是别人共享的不是从海思官方获得的(以前的Hi3536等...

2019-10-26 09:16:39 5004

原创 海思Hi3536交叉编译x264库

一、交叉编译x264库到https://www.videolan.org/developers/x264.html下载源代码。配置生成Makefile,默认是开启NEON的./configure --prefix=`pwd`/_inatall --host=arm-hisiv400-linux --cross-prefix=arm-hisiv400-linux- --enable-s...

2019-10-15 23:21:33 790

原创 RGMII/MII不使用PHY和变压器直连通信

没有物理层的PHY芯片,也就是无法使用MDIO接口配置IEEE相关的寄存器。有时我们只要板子内两个CPU或者FPGA与CPU间进行点对点通信,那就无需使用PHY和变压器了!节省成本比较新的linux内核能直接支持这种应用,即所谓的fixed-link。下面的例子是TI am3358官方评估板BBB版的设备树摘录:红色为关注点cpsw_default: cpsw_default ...

2019-10-10 19:20:31 8504 7

转载 内核符号表的生成和查找过程

https://blog.csdn.net/jasonchen_gbd/article/details/44025681

2019-10-08 23:07:59 285

原创 嵌入式linux产品出厂程序调试手段

嵌入式设备有调试不方便的麻烦,这包括软件、硬件、环境部署上的困难。 如无特殊说明,下文描述的仅是嵌入式linux程序,而不是单片机或FPGA程序,它们有自己独特的调试手段,请知悉! 软件开发时,因gdb是命令行调试工具,我们不能像vs2015那样GUI方式下断点进行调试;硬件出问题时,因拆除外壳进行示波器测量困难,尤其是测试点在pcb板背面时,需...

2019-10-08 22:33:46 464

phywhispererusb-vcs-sim.zip

开源USB硬件协议分析仪phywhispererusb的FPGA功能仿真(testbench),原工程使用[Icarus Verilog]进行仿真,没有业界上使用的Synopsys VCS+Verdi仿真专业,本资源将testbench移植到VCS上,使用verdi阅读verilog源代码和查阅波形,方便理解phywhispererusb工程的fpga代码。

2023-08-26

usb2.0-usb3.0.zip

usb2.0和usb3.0的协议规范,搞usb尤其要看烂usb2.0协议文档,该文档可以编辑,当然了,您大可到usb.org官网上下载

2020-07-02

ov_ftdi_2020_0607.tar.gz

因为该工程的.git文件夹太大了,我删掉了,在这里说明git版本号: 该版本是基于仓库https://github.com/openvizsla/ov_ftdi.git下的2ecafcb6425663313952385b0eb03683e9834944(Remove obsolete wireshark dissector (#39)) 在2ecafc版本的基础上,删除原来submodule对应的migen(版本为0.8),改为使用当前最新的migen(0.9.x),仓库为https://github.com/m-labs/migen.git下的b1b2b298b85a795239daad84c75be073ddc4f8bd(zc706: redo FMC connectors) 同时删除misoc文件夹,使用misoc仓库版本为https://github.com/m-labs/misoc.git下的7e5fe8d38835175202dad2c51d37b20b76fd9e16的misoc/interconnect/下相关文件 当然也稍微修改了一下ovctl.py和Makefile等 新版本migen不使用xilinx默认的工具链路径,所以编译时需要先指定Xilinx的工具链路径: export PATH=$PATH:/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64 再make

2020-06-07

qt5.9.8的USB键鼠热插拔源码修改.tar.gz

QT5.9.8鼠标键盘热插拔默认情况是使用udev进行热插拔的,但很多情况下嵌入式系统udev配置不完整, 可能需要systemd里面的udev组件才能正常工作 鉴于此,参考网上的朋友的修改例子,不使用udev也能正常检测键鼠热插拔

2020-03-05

HaneWinNFSServer_ha_setup.zip

HaneWinNFSServer_ha_setup 是WINDOWS下的NFS服务器,在开发嵌入式时能比较好地替代tftp将可执行文件上传到板卡,但考虑到windows系统与linux系统的差异 不建议在windows NFS共享出来的文件夹下进行开发,而是改为使用samba服务器在linux系统上的文件夹共享出去给windows。

2019-11-06

sourceinsight4.0.99.zip

SourceInsight比较方便阅读C/C++。截止2019年9月13日中秋佳节为止的最新版本SourceInsight4.0.0099。内含官方安装包和劫持dll。download自吾爱po解网,特此感谢。 若喜欢该软件,请购买正版!!

2019-09-12

modelsim10.6d

是modelsim10.6d-se的资源链接,若链接失效,请联系我(CSDN站内私信),我也是从网友得到的,现分享给大家。 亲测编译viviado2017.4库无错误,另外我还有QuestaSim10.6c,也是从网友得到,但我没有放进这里来

2018-10-13

BCM43142官方驱动文件

centos7.5的BCM43142驱动程序与安装说明,有助于在使用博通BCM43142无线网卡的使用,不过只适用于在centos7系列里。另外里面的文件均可从官方获取到,请知悉

2018-10-09

《高级FPGA设计 结构、实现和优化》原版

《Advanced FPGA Design - Architecture, Implementation, and Optimization》

2017-07-10

Vivado/ISE与modelsim联合仿真

ISE与Vivado与modelsim联合仿真步骤,比较详细,可参考

2016-11-12

xilinx ise 14.7 license

xilinx ise 14.7 license 亲测可用

2016-06-18

《ROOTKITS—Windows内核的安全防护》使用的源代码

由于书上下载源码的网址现在已经不能打开了,现只能使用之前已经download下了的备份源码了

2015-07-28

ARM System Developer's Guide(Designing and Optimizing System Software)

ARM开发必看资源,主要是描述ARM指令集及其汇编的优化处理,也设计部分C语言和数字信号处理的优化问题

2015-03-31

《自己设计制作CPU与单片机》附录与配套源代码

《自己设计制作CPU与单片机》附录与配套FPGA源代码,书上说是光盘,但我买这书时并没有光盘,这个文件也是我自己在网上下载的,并不能保证没有被修改过

2015-03-15

STM8 I/O模拟SPI读取SD卡

STM8I/O模拟SPI测试程序,部分移植Petit FatFs文件系统(没有移植SD卡写部分),只是简单测试使用

2015-03-14

正则表达式语法

罗列了一些正则表达式的语法,使用正在表达式时你可以当作工具书查阅

2014-11-16

Makefile文件的编写

Makefile文件的编写教材,可以初步掌握Makefile文件的语法和使用

2014-11-16

linux-2.6.11源码

linux-2.6.11源码,可配合《深入理解Linux内核》

2014-11-16

《算法导论》及课后习题

《算法导论》及课后习题,对思维和数学能力有很大锻炼

2014-07-13

《编程珠玑:》

算法经典书籍,大师级程序员讲解算法以及编程方法,测试方法

2014-03-28

TMS320C6748的CCS程序开发入门教程

使用CCS5.0编译器,讲解TMS320C6748、OMAPL138 DSP入门的三个程序,GPIO控制,中断,串口程序。

2014-03-28

SD卡及FAT32初步了解

SD卡的单片机驱动,FAT32文件系统的初步了解以及petit_fatfs文件系统的移植

2014-03-28

PWM的一阶保持DAC

PWM的频率对应于采样率,而占空比对应于数字量化,可用PWM模拟低精度的DAC,降低成本。

2014-03-28

OV7670驱动

OV7670,摄像头,可用数据液晶、串口发送到电脑上观看图像

2014-03-28

WAV音频格式

WAV音频格式,一阶保持,AVR单片机的PWM功能

2014-03-28

基于STM32的ADNS3080测量移动距离

基于STM32的ADNS3080测量移动距离

2014-03-28

ADNS-3080鼠标芯片资料(含自带固件)

ADNS-3080鼠标芯片资料(含自带固件),对于开发,制作有关鼠标或者测量有很大帮助

2012-05-07

空空如也

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

TA关注的人

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