代码库(在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. Ubuntu下Eclipse安装与编译ns-3遇见的各种问题

    感觉Eclipse比其它东西装起来麻烦多了. 问题拾遗 (1)安装 这一块倒是没有什么大的问题,Linux操作系统也不需要像在Windows操作系统下下一些必须的东西(比如CDT等等).安装好了JDK ...

  2. hdu 4352 XHXJ's LIS 数位dp+状态压缩

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4352 XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others ...

  3. 《Blue_Flke》团队项目软件系统设计改进

    团队项目系统设计改进: 1.分析项目系统设计说明书初稿的不足,特别是软件系统结构模型建模不完善内容 在上一次的项目系统设计说明书中没有很好的完成软件系统结构模型的建模设计,只做了基本的系统项目原型模型 ...

  4. 1月24日 ruby基础3部分 Numeric, Array已学。

    <div style="background:lightblue"> 第12章 数值类 12.1 数值的构成 Numeric-> Integer-> Fix ...

  5. 『cs231n』卷积神经网络工程实践技巧_上

    概述 数据增强 思路:在训练的时候引入干扰,在测试的时候避免干扰. 翻转图片增强数据. 随机裁切图片后调整大小用于训练,测试时先图像金字塔制作不同尺寸,然后对每个尺寸在固定位置裁切固定大小进入训练,最 ...

  6. Python基础--列表、元组

    一.什么是列表.元组 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见 ...

  7. Python多线程多进程

    一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...

  8. hdu6398 计算几何

    不算严格的计算几何,就是各种分类 精度调好就能过,考虑三条边斜着放的所有情况即可 #include<bits/stdc++.h> #define LL long long #define ...

  9. mysql日期查询大全

    -- 查询昨日一整天的数据 DAY) ,'%Y-%m-%d 23:59:59') AS '昨日结束时间' -- 查询今日开始到当前时间的数据 DAY) ,'%Y-%m-%d %H:%i:%s') AS ...

  10. thinkphp条件查询

    1.这是我在做项目的时候编写的: $profit = M('shipping_types',' ','DB_PROFIT');//没有表前缀,在M函数的第二个参数就为空. //条件$field = a ...