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

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

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

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

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

1602LCD HACKRF pin connection

HACKRF P20  -- 1602LCD pin11
HACKRF P20 -- 1602LCD pin12
HACKRF P20 -- 1602LCD pin13
HACKRF P20 -- 1602LCD pin14
HACKRF P20 -- 1602LCD pin6
HACKRF P20 -- 1602LCD pin5
HACKRF P20 -- 1602LCD pin4
HACKRF VCC -- 1602LCD pin2 pin15
HACKRF GND -- 1602LCD pin1 pin3 pin16

UART HACKRF pin connection

HACKRF P25  GND        -- GND of computer or USB-uart dongle
HACKRF P25 UART0 RXD -- TXD of computer or USB-uart dongle
HACKRF P25 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  --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:

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

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

cd /usr/lib/arm-none-eabi
sudo ln -s /usr/arm-none-eabi/bin bin

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

  1. MicroPython-TPYBoard固件编译教程

    本文主要介绍一下,在Linux环境下编译micropython固件的方法和流程. 首先,我们先来看一下MicroPython的源码结构. github地址:https://github.com/mic ...

  2. ESP32-S3 搭建 micropython 开发环境,固件编译,烧录

    简述 上手了一块乐鑫科技官方推出的ESP32-S3-DevKitC-1开发板,发现 ESP32-S3 的综合性能较比前两代有着非常明显的提升,wifi与蓝牙功能,更充足的外设扩展能力,可以看出其在未来 ...

  3. WNDR4300v2 固件编译

    WNDR4300v2 固件编译 1.从官网下载源码   从官网找到 https://kb.netgear.com/2649/NETGEAR-Open-Source-Code-for-Programme ...

  4. hackrf one环境搭建以及升级固件

    一.环境配置 操作系统: Ubuntu 18 硬件:hackrf 第一步 配置国内源 备份 /etc/apt/sources.list 文件 sudo mv /etc/apt/sources.list ...

  5. ESP8266固件烧录方法

    今天拿到ESP8266的板子,第一步是进行烧录固件. 首先是使用官方自带的参考文档,进行操作.发现每次烧录均卡在等待同步上电. 之后发现是烧录方法错误. 正确的烧录方法: 先按下FLASH不放,再按烧 ...

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

    在有@Override方法上面会报错如下: The method oncreate(Bundle) of type HelloWorld must override or implement a su ...

  7. delphi “div”、“mod”、“\”除法运算符的区别与使用方法(附带FORMAT使用方法)

    Delphi中和除法相关的算术运算符有: div.mod和符号“\” 下面分别对他们的作用.操作数类型和返回值类型进行一下介绍: div:对2个整数进行除,取商,操作数需是integer类型,返回值也 ...

  8. openwrt MT7620 固件编译记录

    下载,安装相关软件 git clone git@github.com:openwrt-mirror/openwrt.git sudo apt-get install gcc g++ binutils ...

  9. openwrt固件编译过程

    主Makefile分析 注:1)make -n可打印makefile执行的命令,而不执行. 2)可以在规则的命令中增加echo跟踪执行进度. 顶层目录的Makefile是openert的总Makefi ...

随机推荐

  1. 如何在Twitter开发者平台上注册自己的应用

    1.打开twitter的官网https://dev.twitter.com,如果还没有注册账号的,需要注册账号,已经注册账号的,请先登录:2.选择其中的My apps,如下图: 3.进去界面,选择Cr ...

  2. 【TCP/IP详解 卷一:协议】第二十二章 TCP的坚持定时器

    这两章来到了TCP的定时器部分,在 TCP的超时与重传 和 TCP的三握四挥 我们介绍了 TCP的重传定时器 和 TCP的2MSL定时器. 本随笔介绍 防止返回ACK丢失的死锁情况 的 坚持定时器 和 ...

  3. BZOJ 1001: [BeiJing2006]狼抓兔子(s-t平面图+最短路求最小割)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1001 题意: 思路:这道题目是最小割题目,但是吧你直接套用Dinic是会超时的. 这里有种很奇妙的做 ...

  4. 内存溢出和内存泄漏 mark下

    https://jingyan.baidu.com/article/495ba841e4423438b30edeb5.html https://www.cnblogs.com/hyh-test/p/8 ...

  5. Oracle 12c Windows安装、介绍及简单使用(图文)

    1.下载 地址为:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html 含企业版和 ...

  6. 关于QT的QPainterPath::arcTo 详解

    这个函数文档的意思就是画弧,看了文档也不太明白,自己做了demo终于明白了意思 移动到圆心,画180度半圆 void TestArcTo::paintEvent(QPaintEvent *) { QP ...

  7. Android程序员眼中世界上最遥远的距离

    世界上最遥远的距离,是我在if里你在else里,似乎一直相伴又永远分离: 世界上最痴心的等待,是我当case你是switch,或许永远都选不上自己: 世界上最真情的相依,是你在try我在catch. ...

  8. Ubuntu中vi命令的编辑模式异常

    今天更改Ubuntu软件源的时候,进入源文件的编辑模式时,发现删除键和编辑都不能正常使用,百度之后,知道是由于Ubuntu预装的是vim-tiny,而我们需要使用vim-full.在此记录下该问题以便 ...

  9. Oracle11g温习-第八章:归档日志

    2013年4月27日 星期六 10:36 1.归档和非归档的区别 1)  归档会在日志切换时,备份历史日志,用于OLTP(在线事务处理系统),可以进行冷备份和热备份,可以实现数据库完全恢复.不完全恢复 ...

  10. After reading a picture than out a picture

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...