- 博客(75)
- 资源 (28)
- 收藏
- 关注
原创 win10 + cpu + pycharm + mindspore
在win10+ cpu环境下用pycharm工程使用华为mindspore框架方法
2024-03-16 22:13:26
1030
1
原创 atlas200I DK使用1 jupyter lab服务器搭建
jupyter lab --generate-config # 上面命令会生成`jupyterlab`配置文件,路径为`~/.jupyter/jupyter_lab_config.py`firewall-cmd --zone=public --add-port=80/tcp --permanent #开启端口。# 填写密码并确认密码,会生成`~/.jupyter/jupyter_server_config.json`c.ServerApp.password = '刚复制的字符串' # 密码。
2024-02-27 17:36:36
636
原创 QEMU使用步骤
(注意:通过命令sudo apt-get install qemu安装的版本为2.11.1,后面价值内核镜像时可能报以下错误)4、输入:qemu-system-arm -M help查看支持芯片仿真类型,这里选择:vexpress-a9。命令把生成的根文件创建在顶层目录(busybox-1.32.1根目录) _install 下,如果是通过。(注意安装版本gcc-linaro-6.5.0-2018.12编译qemu时可能报错)6、下载内核linux-5.4.95,下载地址。7、busybox 下载链接。
2024-02-15 00:02:08
6445
原创 交叉编译器创建
折腾了好几天,终于将arm交叉编译器搭建好了。网上关于创建交叉编译器的资料很多,但是参考安装时都会遇到各种错误,下面记录下我搭建成功的方法。1、设置相关环境变量,方便后续编译安装各个工具时进行参数设置export PRJROOT=/home/jason/cross_compiler_toolexport TARGET=aarch64-linux-gnuexport PREFIX=$PRJROOT/toolsexport TARGET_PREFIX=$PREFIX/$TARGETexport P
2022-04-15 14:16:29
1682
原创 GD25Q32C FLASH DRV
/******************************************************************************** GD25Q32C 32 M-Bit 4M Byte** 256 Byte One Page***********************************************************
2022-04-07 10:27:18
1126
原创 常用资料下载网站
为以后方便查找,将经常要用的资料下载网站记录在此1、gcc交叉编译器下载:Index of /software/gcc/releases/2、linux内核版本下载:kernel/git/stable/linux.git - Linux kernel stable tree3、usbutils(lsusb)、pciutils(lspci)工具下载:Usbutils Download (APK, DEB, EOPKG, IPK, PKG, RPM, TXZ, XBPS, XZ, ZST
2022-04-07 10:11:51
669
原创 pcie设备bar地址空间映射到用户空间的方式
该程序通过指定pcie设备的vendor id和device id能够将设备的bar空间映射到用户空间,用户空间可以通过映射后的地址对bar进行读写操作,方便驱动调试。代码如下:#include <errno.h>#include <getopt.h>#include <fcntl.h>#include <inttypes.h>#include <locale.h>#include <stdio.h>#includ
2022-03-21 16:02:02
4697
11
原创 交叉编译海思hi3559av100平台iperf、pciutils 工具
iperf源码官方下载地址(我下载的是iperf-3.1.3-source.tar):iPerf - Download iPerf3 and original iPerf pre-compiled binaries交叉编译iperf:./configure CC=aarch64-himix100-linux-gcc --host=aarch64-himix100-linux --prefix=$PWD/install CFLAGS=-static CXX=aarch64-himix100-l.
2022-03-21 15:45:55
1164
原创 大页内存使用方式
linux系统下有时进行dma传输时需要申请连续物理内存空间,当需要申请大于4M的连续物理内存时可以使用大页内存地址。要使用 HugePages,首先要向内核声明可以使用的 HugePages 数量proc/sys/vm/nr_hugepages 文件保存了内核可以使用的 HugePages 数量我们可以使用以下命令设置新的可用 HugePages 数量:echo 20 > /proc/sys/vm/nr_hugepages上面命令设置了可用的 HugePages 数量为 20 个(也就.
2022-03-21 15:33:22
1655
原创 linux下用户空间操作物理内存地址
用户空间下通过将物理地址进行映射后进行读写操作,方便驱动调试。代码dev_mem.c如下:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <errno.h>#include <signal.h>#include <fcntl.h>#include <ctype.h>#inc
2022-03-21 15:25:15
1129
原创 nvme测试工具:nvme_cli
nvme_cli工具是用于对nvme盘测试的一款通用工具,提供了读写块,查看control、namespace信息等功能。下载路径:nvme_cli工具是用于对nvme盘进行测试的一款通用工具-其它文档类资源-优快云下载如果需要交叉编译nvme_cli可以修改makefile:增加CC=$(CROSS_COMPILE)gcc然后通过以下方式指定交叉编译器进行编译:make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64或者直接通过以下方
2022-03-21 15:16:15
2504
原创 linux设备树分析3-生成platform_device
上篇讲了从dtb文件转换成device_node树,本篇分析device_node生成platform_device平台设备的过程。平台设备生成入口:在arch/arm64/kernel/setup.c文件中,入口函数为:arm64_device_init->of_platform_populateof_platform_populate在drivers/of/platform.c中定义:int of_platform_populate(struct device_node *roo
2021-09-07 15:56:33
1134
原创 linux设备树分析2-创建device_node树
二进制格式dtb设备树文件需要先转化成设备节点device_node结构,然后再将device_node转换成平台设备platform_device。device_node在文件 include/linux/of.h中:struct device_node { const char *name; /*保存节点名称属性*/ const char *type; /*节点类型*/ phandle phandle; /*节点句柄,该成员可以用于节点引用*/ const char *full_nam
2021-09-03 14:22:39
3378
原创 linux设备树分析1-设备树格式
随着linux的发展,代码越来越庞大,但创始人linus 觉得提交的代码很大一份是描述各种设备的,这部分代码对内核本身来讲意义并不大,为了将linux内核中大量的设备描述相关代码进行精简,从3.0版本起引入了设备树。dts设备树通过节点和其中的属性来描述设备,节点间可以进行嵌套,整个板子的所有设备包含在根节点中,根节点中的各子节点分别描述各个具体设备。根节点格式:/ {property=value;property=<value>;…};其中property表示属
2021-08-25 09:07:16
809
原创 libusb读取鼠标数据
通libusb我们可以在应用层对USB设备进行读写操作。本文以读取USB鼠标数据为例讲述libusb的使用流程。通过源码安装libusb:最新的版本为:libusb-1.0.24,GitHub上免费下载地址:https://github.com/libusb/libusb/releases/tag/v1.0.24ps: 优快云上很多人用这个公共的开源资源来赚积分,而且下载分还贼高,真不怎么地道。解压源码:tar xjvf libusb-1.0.24.tar.bz2在解压跟目录下输入
2021-08-11 10:04:16
2794
原创 linux系统USB抓包方法
Window系统下USB抓包软件工具很多,但linux下USB抓包软件较少,linux系统中可以用wireshark和tcpdump对USB数据进行抓取。Linux下Wireshark和windows版本使用方法相同,下面主要分析下tcpdump的使用方法。使用Wireshark和tcpdump前需要先安装usbmon.ko驱动,一般系统都已经将其编译到内核,输入命令tcpdump –D查看系统是否安装usbmon驱动。如果打印信息包含usbmon内容则说明已经安装usbmon驱动。如果
2021-08-11 09:21:17
3384
原创 linux网络数据接收流程
网络数据接收流程:以下为链路层1、e100_intr(drivers/net/ethernet/intel/e100.c)网卡驱动接收中断服务程序2、__napi_schedule(net/core/dev.c)3、____napi_schedule (net/core/dev.c)主要功能:将驱动程序中的napi->poll_list链接到cpu的softnet_data->poll_list4、__raise_softirq_irqoff(net/core/d
2021-07-27 16:28:27
773
原创 linux网络数据发送流程
网络套接字如何将数据发生出去的呢?这个需要从网络协议初始化开始分析。网络协议初始化:所在文件net/ipv4/af_inet.cstatic int __init inet_init(void)上面接口将初始化ipv4相关协议socket模块初始化:所在文件net/socket.cstatic int __init sock_init(void){ int err; /* * Initialize the network sysctl infrastr.
2021-07-27 16:22:56
3066
原创 linux路由初始化调用的相关接口函数
本文简单记录路由初始化调用的相关接口函数发送路由调用过程:1、tcp_v4_connect(net/ipv4/tcp_ipv4.c)传输层连接接口,根据路由表设置原ip地址和发送网络设备接口2、ip_route_connect (include/net/route.h)3、__ip_route_output_key (net/ipv4/route.c)4、__mkroute_output(net/ipv4/route.c)5、rt_dst_alloc(net/ipv4/rout.
2021-07-27 16:05:24
537
原创 netfilter分析3-钩子函数执行流程
前面两节分析了钩子函数和表的初始化,本节来分析钩子函数是如何通过使用表来处理报文的。首先还是回到钩子函数的入口NF_HOOK,之前讲过通过该宏会调用文件/include/linux/netfilter.h中定义的函数:static inline int nf_hook_thresh(u_int8_t pf, unsigned int hook, struct net *net, struct sock *sk, struct sk_buff *skb, st
2021-07-27 16:00:14
1248
原创 deb格式安装包创建流程
建立根目录,目录名称为test 在test目录下建立配置文件目录:DEBIAN和程序文件目录:usr,目录结构如下所示: 3.DEBIAN目下创建文件名分别为control、md5sums、postinst、postrm、prerm的配置文件,如下所示:a、control包描述文件Package: testVersion: 1.0.0Architecture: arm64Maintainer: jasonInstalled-Size: 351D...
2021-07-23 18:54:37
1508
原创 netfilter分析2-表在内核的初始化
上一节讲了钩子函数用表中的规则处理报文从而实现防火墙功能,这一节对表的初始化流程进行描述。为了保持和上一章的延续我们回到filter表钩子函数初始化入口:所在文件net/ipv4/netfilter/iptable_filter.cstatic int __init iptable_filter_init(void){int ret;ret = register_pernet_subsys(&iptable_filter_net_ops);if (ret < 0
2021-07-23 18:38:49
802
原创 netfilter分析1-钩子函数在内核的初始化
Linux内核中网络防火墙是通过NF_HOOK宏调用钩子函数进行报文处理,本文基于内核版本4.4对钩子函数的初始化流程进行描述。以过滤本地报文的钩子函数为例。本地报文过滤钩子函数调用宏:NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_IN,net, NULL, skb, skb->dev, NULL,ip_local_deliver_finish);这个宏在文件/include/linux/netfilter.h中定义:sta...
2021-07-20 10:46:33
1253
原创 phy配置应用程序
Phy芯片一般通过mdio接口进行配置,如果满足以下条件1、网卡驱动支持MDIO接口配置phy2、确认驱动设置phy的方式,通过查看82599驱动代码确认:phyid包含两部分内容,phyaddr:phy地址和devnum:设备号,phyid=(phyaddr<<5)| (devnum & 0x1f)3、确认应用层通过MDIO设置phy的方式,通常支持两种方式:ethtool和ioctl方式,具体支持那种方式也要通过驱动确认。可以在应用层进行mdio读写配置,下面代码以...
2021-07-20 10:25:06
1859
原创 5 消息操作与包格式
门铃事务(DOORBELL)第10类包格式是门铃事务格式。它没有数据载荷。门铃事务的请求包格式如下图所示上图中Ftype字段固定为10,表示这是一个门铃事务,8位的Reserved字段应该置0,Source TID指的是请求方的事务ID, info(msb)表示的是发送信息的高8位,info(lsb)表示的是发送信息的低8位。如果信息是用数字表示的,而且长度大于8位,那么数据符合低地址存放高字节(big-endian)的格式。比特流中先到达的是高字节。门铃事务适合向处理器递送中断信息,在这种情况
2021-07-09 09:21:24
497
原创 4 维护操作与包格式
第8类事务维护事务用于访问 RapidIO能力寄存器(CARs,Capability Registers)、命令和状态奇存器( CSRs,Command and Status Register) ,本地定义的寄存器(Locally-Refined Registers)以及数据结构(Data Structures)。与其他的请求格式不同,维护操作的请求和响应包格式都是第8类包格式。第8 类包不含地址字段,只含写请求和读响应的数据载荷。WRSIZE字段规定了多双字事务数据载荷的最大长度。数据载荷的长度不能超
2021-07-08 17:24:11
1033
可用于QEMU仿真的uboot源码
2024-02-15
银河麒麟(kylin)4.4内核nvme驱动
2023-07-12
一个内核空间内存映射到用户空间的程序示例,包含驱动代码和用户空间测试代码
2022-04-21
pcie驱动测试工具,可用于pcie驱动调试,安装驱动后可对设备bar空间地址进行读写
2022-03-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人