- 博客(32)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Uboot-2017-11移植DM9621网卡专题【目录汇总】
前言目前讯为官方的开发板提供的BSP里面,uboot并不支持网卡功能,所以uboot的网络相关命令也都没有办法使用,只能使用官方的定制fastboot命令来达到加载内核启动的功能。fastboot是基于USB数据线的,还有各种驱动要安装,使用起来其实还是诸多不便的。前段时间心血来潮,那就把网卡移植上去,经查阅很多优秀的资料过后,觉得这条路走得通,所以才有了今天的这篇博客专题。我会尽量详细的把移植...
2019-12-23 10:43:54
2760
7
原创 平头哥IP核C906的JTAG调试器DIY教程(二)
玄铁C906的JTAG硬件调试器DIY教程,基于sipeed出品的RV-Debugger-plus。
2024-02-25 17:24:00
886
原创 平头哥IP核C906的JTAG调试器DIY教程(一)
最近买了一块基于平头哥C906核的核心板,手工焊接了白嫖的底板上。在焊接完成后,进行点亮跑程序的时候,发现没有优雅的调试方法,只能用串口调试的方法,无法追踪程序在核心上的运行流程。
2024-02-25 16:32:36
877
原创 RK3328启动失败解决记录
前言此系列博文是在解决了openwrt在NanoPi R2s上启动失败的解决过程记录,顺带也熟悉了rk3328系列的芯片的启动过程和openwrt中对uboot和最终镜像的生成过程。问题现象在master主线的版本编译后,烧写到闪迪的32G TF卡后,发现不能启动,通过串口,得到以下输出。U-Boot TPL 2021.01 (Jun 13 2021 - 22:02:19)DDR4, 333MHzBW=32 Col=10 Bk=4 BG=2 CS0 Row=15 CS=1 Die BW=16 S
2021-07-15 23:42:18
2876
原创 向开源社区提交patch
前言平时我们可能会遇到一些开源项目的一些bug,往往先会查阅资料,看是否有对应的解决办法,无果的话,可以尝试自己解决该问题,然后可以提交自己的修改到开源社区。博主在使用openwrt master分支的时候,就发现了特殊场景下的问题,在多日的debug后,解决了问题,并提交了patch给官方社区,这里记录下给官方提供patch的工程,以供以后使用。patch提交方式- mailing list- github web UI说明:针对uboot,官方只支持mailing list的方式;open
2021-07-15 23:33:58
708
原创 GDB 交叉调试流程
目标板上运行$ gdbserver [ip]:<port> <program>ip - 参数可以省略,则表示绑定本机所有IPport - gdbserver监听的端口号program - 被调试的程序上位机上运行$ xxx-gdb...(gdb) target remote <ip>:<port>ip - 远端gdbserver等待连接的设备IPport - 远端gdbserver监听的端口gdb使用常用命令...
2021-05-27 17:21:16
476
原创 GCC -pg选项工作原理分析
前言-pg选项打开后,gcc会在每个函数体调用前,先调用__mcount(每个架构,名字可能不同,通过宏MCOUNT_NAME确定)。然后在执行的时候,便能跟踪函数调用的过程。为了和编译系统一致,采用7.5.0的源码,对函数插桩的原理进行分析gcc源码层次比较深,有些代码是编译中通过脚本实现的,需要先在源码目录尝试构建一下,然后再进行代码分析1 跟踪调用实现过程搜索__mcount关键字,发现很多地方都有,但很多都是无关实现的(docs),有关的如下./gcc/config/ti
2021-05-27 17:19:39
2399
原创 趣事随笔
清除终端的方法无意间发现ctrl + l背后的实现原理。那就是:向stdout输出字符串{0x1b, 0x5b, 0x48, 0x1b, 0x5b, 0x4a}序列用shell执行printf ‘\033[H\033[J’(本质上就是输出上面的序列)可用简单的代码实现top命令显示效果:#include <stdio.h>#include <unistd.h>char magic_str[] = {0x1b, 0x5b, 0x48, 0x1b, 0x5b, 0x4
2021-05-20 15:24:16
166
原创 Openwrt编译Xray-core出错记录
问题描述最近老是编译出现这个错误问题,搜索资料后才发现是地址在大陆被block了。。。go: github.com/ghodss/yaml@v1.0.1-0.20190212211648-25d852aebe32: Get "https://proxy.golang.org/github.com/ghodss/yaml/@v/v1.0.1-0.20190212211648-25d852aebe32.mod": dial tcp 224.0.0.1:443: connect: network is unr
2021-05-07 21:04:12
5006
1
原创 稚辉君HDMI-MIPI东芝方案(原创,连载中~)
HDMI-MIPI Adaptor前言前段时间在哔哩哔哩上看到稚辉君的Pocket LCD项目,感觉很有意思,正好也想要个便携式显示屏,我也来DIY一下~主要的流程如下:方案选择硬件选择软件设计记录1. 方案选择目前不需要充电宝这个功能,干脆就先弄个转换器吧~2. 硬件选择选用UP主的东芝方案,因为龙讯方案不开源,不能愉快地玩耍呀~3. 软件设计ASIC芯片是通过I2C接口进行配置的,先买个STM32F103C8xx来编下程,主要是太久没用STM32了,上次用还是几年前在学校的
2021-02-03 00:55:54
2079
2
原创 Curl_easy_perform failed with 27 Out of memory
问题:开子线程,调用curl_easy_perform和主线程调用curl_easy_perform,访问https连接时,有几率出现错误,返回值为27,Out of memory分析:错误日志:* About to connect() to xxx.com.cn port 443 (#0)* Trying 54.223.100.xxx... * connected* SSL: couldn't create a context: error:140A90F1:lib(20):func(16
2020-10-26 11:07:13
2759
原创 IPTABLES nat
DNAT映射到路由器<port>的TCP报文,修改报文目的地址和端口为<dst_ip>和<dst_port>iptables -t nat -I -p tcp -m tcp --dport <port> -j DNAT --to-destination <dst_ip>:<dst_port>收到映射后报文的局域网内主机需要能够将应答报文转发到路由器路由器需要配置SNAT,能将局域网内主机的应答报文的源地址修改为路由器的地
2020-10-14 16:42:06
154
原创 Terminator粘贴自动加入0~和1~的解决办法(原创)
环境笔者在Ubuntu 16.04 LTS版本上通过apt安装terminator的时候,发现在使用过vim命令后,在bash中粘贴的字符都会在其首部加入0~,尾部加入1~,百思不得其解。并且其终端样式和系统默认的gnome-terminal还有点不一样,使用极其不方便,下面是笔者摸索的解决办法。解决办法在终端中执行printf “\e[?2004l” (该方法通过网友提供,治标不治本)更新terminator版本(终极办法,最终发现问题是Xenial的软件库里面terminator版本太低导致)
2020-08-05 16:47:34
637
原创 移植Ubuntu Base 20.04 LTS (Focal Fossa)到4412开发板
前言此文填上篇文章【移植Linux-5.4+内核到4412开发板移植】的坑,在前面的文章移植完uboot,内核后,接下来就是文件系统的移植了。博主的其他几篇博文里面也有自己构建根文件系统的教程,那样需要自己交叉编译busybox,各种库等等,对于4412开发板来说,资源完全足够,移植个ubuntu上去他不香吗?这里得感谢下讯为法师的文章-【I.MX6ULL终结者开发板移植ubuntu】,感谢大佬们知识的分享。说明大家不要看着ubuntu就怕了,其实移植里面ubuntu是相对最简单,步骤最少的了。Ubu
2020-07-05 23:08:04
3143
9
原创 移植Linux-5.4+内核到4412开发板
前言前段时间接触到了友善的开发板,里面用了最新的5.4+内核,恰好想起了了讯为法师以前在公众号发布的文章-【番外 | 移植linux4.14内核到4412开发板】。讯为的scp开发板已经在主线版本支持了,只需要稍加修改设备树便可以直接移植完成了,这里还是要感谢讯为官方对4412开发板的支持。一、环境说明OS版本Ubuntu 20 LTS交叉编译环境配置$ sudo apt install gcc-arm-linux-gnueabihf$ sudo apt install flex$ sud
2020-06-17 00:00:24
2468
原创 gcc和g++降级、升级_Ubuntu18 LTS
前言由于很多开发环境所用的环境都是比较追求稳定,或者未跟上编译器的更新速度;还有有些代码是依赖于gcc/g++的内建特性的。导致有些用新版本的gcc/g++编译时无法通过,或者编译后无法正常运行的。就需要对自带的编译器进行升级或者降级。步骤说明笔者这里需要用版本低一点的gcc/g++工具链,需要对Ubuntu18 LTS自带的7.3.0进行降级操作。以下是流程:安装gcc-4.8和g+±...
2020-04-27 23:36:07
554
原创 Makefile用法记录
示例一.s.o: $(CC) $(CFLAGS) -o $@ -c $<.c.o: $(CC) $(CFLAGS) -o $@ -c $<.PHONY: cleanclean: rm -rf *.o这个规则表示所有的 .o文件都是依赖与相应的.c或.s文件;$(CC) - 表示引用变量的值$@ - 表示所有的目标$< - 表示引用第一个依赖$^ -...
2020-04-27 23:30:00
178
原创 查看linux内核文件initrd.img
查看压缩包方法一、2.6及以后版本1、解包2.6及以后内核中的initrd.img采用cpio压缩,不再是2.4内核使用的ext2格式,无法使用mount -o loop 挂载。需要使用gunzip解压缩,然后再使用cpio解包。以下作为示例: $ cp /boot/initrd.img initrd.img.gz $ gunzip initrd.img.gz $ mkdir i...
2020-04-27 23:27:54
652
原创 VIM 常用用法
1、替换1.1、基础格式为::[range]s/pattern/string/[c,e,g,i]range可取值:n,$ - 第n行到最后一行.,$ - 当前行到最后一行% - 每一行option可取值:c confirm,每次替换前询问。e 不显示 error。g globe,不询问,整行替换。i ignore 不分大小写。2、 多窗口编辑上下划分窗口 - ...
2020-04-27 23:25:31
125
原创 ubuntu 18.04 LTS配置静态IP
前言在Ubuntu17.10开始,有一种全新的IP地址设置方法。手动编辑文本/ etc / network / interfaces文件的日子已经过去了。取而代之的是netplan,是的,只需要编辑一个.yaml文件(正确地遵守代码对每一行代码的缩进),便可配置本机IP。配置示例network: version: 2 renderer: networkd ethernets: ...
2020-04-27 23:24:32
267
原创 itop4412 openssh-8.0p1移植教程
前言在上一篇文章 itop4412 linux驱动学习环境搭建-最小根文件系统制作与NFS挂载) 中,搭建了学习驱动的环境,本文续接上篇文章,进行openssh的移植,使得以后可以远程通过ssh连接开发板,也能通过sftp上传下载文件。编译环境前言中的上一篇文章相同,采用ubuntu18.04 LTS + gcc-arm-linux-gnueabihf(默认7.4.0)。源码下载ope...
2020-04-27 23:20:40
367
原创 itop4412 linux驱动学习环境搭建-最小根文件系统制作与NFS挂载
前言在前面的文章中,完成了uboot和内核的基本移植教程,为驱动的学习打下了一定的基础。为了后期更好的学习,本篇文章记录了最小文件系统的制作、nfs挂载根文件系统教程,搭建一个方便驱动教程学习的环境。注:本文开发环境均基于ubuntu18.04 LTS平台搭建。##交叉编译工具安装说明后期所有程序都是在开发板上运行的,基于ARM Coretex-A9的exynos 4412,而我们开...
2020-04-27 23:12:43
647
原创 搭建好的itop4412驱动学习环境汇总 - 可直接下载使用
linux-4.14.2内核链接itop4412_linux_official说明直接clone下仓库,查看README.md文件获取更多信息。uboot-2017.11链接itop4412_uboot_official说明经我测试发现采用官方编译方法后的uboot无法正常采用fastboot烧写文件系统,这里推荐使用官方所给的编译完成的bin文件,目录为:g...
2020-04-27 22:59:50
690
9
原创 Python3 中文字符与Unicode字符互转(原创)
中文转Unicodedef cn_to_unicode(in_str, need_str=True, debug=False): out = [] for s in in_str: # 获得该字符的数值 val = ord(s) # print(val) # 小于0xff则为ASCII码,手动构造\u00xx格式...
2020-01-15 10:58:51
585
原创 Terminator粘贴自动加入0~和1~的解决办法(原创)
环境笔者在Ubuntu 16.04 LTS版本上通过apt安装terminator的时候,发现在使用过vim命令后,在bash中粘贴的字符都会在其首部加入0~,尾部加入1~,百思不得其解。并且其终端样式和系统默认的gnome-terminal还有点不一样,使用极其不方便,下面是笔者摸索的解决办法。解决办法在终端中执行printf “\e[?2004l” (该方法通过网友提供,治标不治本)...
2020-01-15 10:56:25
1924
原创 Uboot 网卡移植遇到的问题与解决方法
前言在上一章节中描述的两个问题,这里做下简单回顾。情况一在运行到接收以太帧的时候,出现了data abrot异常,如下:data abortpc : [<7fe9a2a0>] lr : [<7aede325>]reloc pc : [<43e432a0>] lr : [<3ee87325>]sp : 7ae54ce0 i...
2020-01-02 00:40:30
2103
2
原创 Uboot 网络加载并启动Linux - 基于移植好的网络功能
前言根据前面的文章,到现在移植的DM9621网卡已经能正常工作了,接下来便是使用Uboot内置的网络命令集,进行相关的操作,如tftpboot加载内核,加载设备树等。下面将会对移植好的网络功能做个简单介绍。使能DM9621网卡说明因为是基于USB网卡的缘故,Uboot默认启动时是没有开启USB功能的,所以没有办法自动初始化网卡,需要手动去使能USB功能,和使能DM9621网卡。步骤u-...
2019-12-26 01:14:09
3530
22
原创 Uboot DM9621网卡移植之路
前言根据前面文章USB和Ethernet协议了解与原理图分析、DM_USB和DM_ETH模型简介所介绍,想必大家已经知道移植的流程应该是如何了,这里再简单的给出大致步骤,如下。移植USB Host Controller驱动使能USB3503 Hub移植DM9621驱动测试验证功能性接下来就按照这几个步骤进行Uboot中DM9621网卡的移植之路,最终实现在Uboot中使用网络命...
2019-12-25 00:08:24
3590
13
原创 iTop4412 Uboot-2017 启动流程分析
说明本文仅针对讯为的iTop4412开发板的uboot启动进行分析,其他开发板整体步骤可能一致,具体细节可能差别很大,本文仅供参考。暂时贴出示意,后面有时间在总结;可用点灯大法跟踪运行流程,贴出点灯代码。asm版本ldr r0, =0x11000100 /* GPL2_0 CON */mov r1, #1str r1, [r0] /* set bit 0, output mode ...
2019-12-23 22:46:55
683
原创 Uboot DM_USB与DM_ETH模型
技术背景详细有学习过Linux驱动的小伙伴,都知道相应的总线驱动模型吧。学习驱动都是先从硬编码,到设备驱动模型的历程,这样能让代码尽可能少的改动,即可支持一系列的设备。在较新的Uboot中,已经有成熟的DM模型了,可以像开发Linux驱动一样,很容易的就能完成设备驱动的编写。本专题也是基于DM_USB和DM_ETH模型,对iTop4412开发板的DM9621 USB to Ethernet芯片...
2019-12-23 22:35:35
3250
原创 USB和Ethernet协议了解与原理图分析
前言板载硬件支持iTop4412 开发板SOC采用Exynos4412,是一款比较成熟,性能很强的SOC。核心板板载USB3503,引出高性能HSIC,实现2路USB HOST输出。本专题主要是在Uboot中驱动USB Device - DM9621 (Davicom DM96xx USB 10/100 Ethernet),下面会简单介绍下硬件背景,怎么去初始化芯片。说明既然DM9621为...
2019-12-23 21:12:57
6032
uboot-2017-11-DM9601.zip
2020-05-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人