给hackrf加上1602LCD以及UART(附带固件编译方法)

代码库(在hackrf原代码库基础上只添了两个文件,改了一个文件):

https://github.com/JiaoXianjun/hackrf-UART-1602LCD

目的主要是为了帮助想更改调试hackrf固件的人。因为没有调试手段的话改固件基本两眼一摸黑,黑暗中摸索很难。前段日子弄收飞机的固件时已经在黑暗中把调试手段弄通了,共享给需要的人。

就是给hackrf板子加上了1602液晶屏以及uart,然后就能愉快的在自己的固件代码中输出到液晶屏或者printf到电脑的串口终端了。

1 硬件连线(无需hackrf任何改动,利用它留出的现有io)

1602LCD HACKRF pin connection

HACKRF P20 20 -- 1602LCD pin11
HACKRF P20 18 -- 1602LCD pin12
HACKRF P20 16 -- 1602LCD pin13
HACKRF P20 14 -- 1602LCD pin14
HACKRF P20 11 -- 1602LCD pin6
HACKRF P20  9 -- 1602LCD pin5
HACKRF P20  7 -- 1602LCD pin4
HACKRF    VCC -- 1602LCD pin2 pin15
HACKRF    GND -- 1602LCD pin1 pin3 pin16

UART HACKRF pin connection

HACKRF P25 1 GND        -- GND of computer or USB-uart dongle
HACKRF P25 4 UART0 RXD  -- TXD of computer or USB-uart dongle
HACKRF P25 5 UART0 TXD  -- RXD of computer or USB-uart dongle

其中hackrf的P20和P25定义,大家去看它的 hackrf-one-assembly.pdf and hackrf-one-schematic.pdf (hackrf代码库doc/hardware目录)。关于1602LCD模块pin脚定义,以及usb串口的pin脚定义更是烂大街了,自己搜吧。

2 软件demo

上图中我给的hackrf固件代码循环在液晶屏显示两行,同时也往电脑上的minicom打印串口输出。波特率921600。

核心源文件hackrf_uart_1602lcd.c

整体的可编译的代码库放在这里了: https://github.com/JiaoXianjun/hackrf-UART-1602LCD

目录firmware/hackrf_uart_1602lcd/build/下放了一个编译好的DFU固件,你若不想编译,可以直接DFU模式下尝试,快速验证你的硬件连接对不对:

dfu-util --device 1fc9:000c --alt 0 --download hackrf_uart_1602lcd.dfu
(before dfu-util, make sure set your board into DFU mode)

3 关于固件编译的一些坑

基本的固件编译方法可以参照README。注意,按照README先编译libopencm3,然后:

cd firmware/hackrf_uart_1602lcd
mkdir build
cd build
cmake .. -DRUN_FROM=RAM
make

坑:

1.不是任何dfu-util都能用的,我测试了n个,这个可以用

git://gitorious.org/dfu-util/dfu-util.git  

我也放了一份在这里: https://github.com/sdr-x/sdr-x.github.io/blob/master/_resource/dfu-util.tar.gz

2.hackrf-common.cmake需要改一下

COMMAND dfu-suffix --vid=0x1fc9 --pid=0x000c --did=0x0 -s 0 -a _tmp.dfu 中的 "-s 0"去掉。后面再添加一行:

COMMAND dfu-prefix -s 0 -a _tmp.dfu

改完是这个样子:hackrf-common.cmake

3.Ubuntu自带的gcc-arm-none-eabi编译器不能用!要用这个:

https://launchpad.net/~terry.guo/+archive/ubuntu/gcc-arm-embedded

!!! If you are using Ubuntu 14.04 and later, please be careful because there are packages with same name but produced by Debian and inherited by Ubuntu. Simply follow the above 3 steps, you may end up with gcc-arm-none-eabi from Ubuntu. So to install gcc-arm-none-eabi from ARM, steps are:

1). sudo apt-get remove binutils-arm-none-eabi gcc-arm-none-eabi
2). sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
3). sudo apt-get update
4). sudo apt-get install gcc-arm-none-eabi=4.9.3.2015q1-0trusty13
   or
   sudo apt-get install gcc-arm-none-eabi=4.9.3.2015q1-0utopic14

如果有找不到命令的错误,可能还需要如下操作:

cd /usr/lib/arm-none-eabi
sudo ln -s /usr/arm-none-eabi/bin bin
时间: 2024-08-29 18:58:21

给hackrf加上1602LCD以及UART(附带固件编译方法)的相关文章

零基础openwrt固件编译

零基础OpenWRT固件编译 戴维营教育<物联网/智能家居开发>课程系列 1.OpenWRT项目简介 OpenWRT是一个专用于无线路由器设备的Linux发行版.支持众多的芯片方案的路由器设备,由x86到ARM,MIPS等等. 目前稳定版本是: BARRIER BREAKER (14.07) 目前开发版本是: Chaos Calmer (trunk) 详细信息参看官方网址: https://openwrt.org 2.采用OpenWRT的智能路由器 极路由 小米路由 优酷路由 迅雷路由 360

myeclipse 方法上加上@Override就报错的处理方法

在有@Override方法上面会报错如下: The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method Override是指子类继承父类里面的方法的描述,说明. Override是JDK5 就已经有了,但有个Bug,就是不支持对接口的实现,认为这不是Override而JDK6 修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Override 修改方法:

一般网站上传图片的大小是多少?网站图片上传格式大小建议 附带简单修图方法

一般网站上传图片的大小是多少呢?尚网汇智给您列一下网站图片上传格式大小建议: 首先,上传图片格式: 通常图片以JPG图片居多,JPG格式的图片较小,图片也比较柔和 不过特殊情况就要用特殊格式的图片了 如1:图片为动画形式,则可以使用GIF动画格式,存成JPG图片就不会动了 如2:图片为透明或半透明格式,则建议使用24位PNG格式图片,兼容性更好,边缘也显示得更好 然后,就是上传图片的大小问题了: 通常,尚网汇智开发网站时会在后台对各栏目需要上传图片的地方做对应标记(例:最佳尺寸:宽100像素 *

转:如何编译OpenWrt

原文:http://blog.chinaunix.net/uid-25890465-id-2497754.html (!文末,附加人生如戏写的编译OPENWRT的TXT内容,可直接跳至末尾,有例子) Openwrt 官方正式的发行版是已编译好了的映像文件(后缀名bin或trx.trx2),此映像文件可从Openwrt官方网站的下载页面中轻松获取到,连接地址为 OpenWrt官方网站.这些编译好的映像文件是基于默认的配置设置,且只针对受支持的平台或设备的.因此,为什么要打造一个自己的映像文件,理由

Proxmark3的固件介绍,编译和烧写

http://www.wwwer.net/archives/proxmark3-introduced.html Proxmark3固件介绍 Proxmark3是一个开源的安全设备,故此其内置的固件也是因开源而不断的进行升级以及修改, 而我们团购回来的版本是较为稳定的r486,因为每次编译固件生成bin的时候, 我们不仅仅是在编译更新Proxmark3自身的固件也在编译我们PC端使用的客户端. Proxmark3客户端与固件的关系 因为Proxmark3的原理是PC端只是基于命令的回显以及发送,不

arduino远程刷新(烧录)固件

在车间部署了十几个网络版的温湿度采集器(基于arduino的),这些采集器分布在不同的地方,现在要更新一下上面的固件.最笨的方法是一个一个地取下来,插到电脑的USB接口上进行固件更新,这样做显然很麻烦.能不能直接通过网络(以太网)进行固件的更新呢? 我查了一下资料,发现网上只有通过蓝牙更新的固件的,但是没有以太网的.低功耗的商用的蓝牙,其传输距离只有10米,且那个方法必须在板上进行手动复位.我研究了一下,发现了通过以太网刷新固件的方法,现跟大家分享一下. 1.原理: (1)通过串口转wifi模块

实验二-固件设计 20135211李行之 20135216刘蔚然

北京电子科技学院(BESTI) 实 验 报 告 封面 课程:信息安全系统设计基础                               班级:1352                                                   姓名:(按贡献大小排名)李行之 刘蔚然 学号:(按贡献大小排名)20135211 20135216                   成绩:                     指导教师:娄嘉鹏                 实验日期

为每个请求链接加上参数paramId

代码: //  /**   * 为每个请求链接加上参数paramId   * 注释:只有GET方法可在链接后使用?paramId=adfa_232,POST不可以   */   HttpServletRequest request=(HttpServletRequest) servletrequest;    HttpServletResponse response=(HttpServletResponse) servletresponse;       //获取上一步的请求链接   Strin

如何在编译内核时添加缺少的固件(以intel wireless 5100 AGN的 iwlwifi 为例)

不知大家在笔记本使用 Linux 时编译内核后无线wifi 能不能用,我的本本是"联想 Y450"一款足够老的本本,配的无线网卡是: $ lspci | grep Wireless 06:00.0 Network controller: Intel Corporation PRO/Wireless 5100 AGN [Shiloh] Network Connection 目前使用的系统为 Linux Mint 17 Qiana (Cinnamon桌面版的,毕竟cinnamon是基于Gn