linux虚拟机 dnw,linux下安装及使用DNW
下载地址:http://download.csdn.net/download/plaza02/1011140
包含两个工具:scebulk(USB驱动) 、dnw(下载工具)
解压缩后,进入该文件夹
cd /dnw/dnw_linux/scebulk/
(1)安装secbulk
先用USB线连接开发板与电脑,打开开发板电源,终端执行dmesg命令
找到这样的信息:
(可以先执行dmesg -c 清除之前的记录信息,上电,再dmesg)
可以得知,开发板 idVendor=04e8, idProduct=1234 , 记住这两个数
打开下载的dnw包,进入secbulk目录,编辑secbulk.c文件,找到这句:
static struct usb_device_id secbulk_table[]= {
{ USB_DEVICE(0x5345, 0x1234)},
{ }
};
将USB_DEVICE里的两个数改成前面的idendor和idProduct,保存退出。
static struct usb_device_id secbulk_table[]= {
{ USB_DEVICE(0x04e8, 0x1234)},
{ }
};
执行:make -C /lib/modules/`uname -r`/build M=`pwd` modules
执行成功在当前目录会出现secbulk.ko。
PS:在secbulk.c中,找到
#define BULKOUT_BUFFER_SIZE32
这句,将其修改为 64或512,下载速度会极大提升
加载模块模块到Linux内核:
执行:insmod secbulk.ko
可以用:lsmod | grep secbulk 来查看是否加载成功
lsmod | grep secbulk secbulk 2270 0
用USB线连接开发板和电脑,打开开发板电源,虚拟机挂载开发板USB下载端,执行dmesg命令,诺出现:
说明连接成功
开机的时候不会自动加载.ko文件,这样每次都要先加载才可以使用,此时将其加入开机脚本,
使其得到自动加载,编辑/etc/init.d/rc.local 在最后加上 insmod /所在路径/secbulk.ko。
(2)安装dnw
上面给出的dnw下载地址需要进行如下修改:
打开dnw.c文件,找到
printf("Writing data...\n");
size_t remain_size = file_stat.st_size+10;
size_t block_size = remain_size / 100;
size_t writed = 0;改为
printf("Writing data...\n");
size_t remain_size = file_stat.st_size+10;
size_t block_size = remain_size;
size_t writed = 0;便可正常在linux下使用dnw。
2.测试
编写一个简单的点亮LED灯程序测试是否可以正常烧写。
#start.S
#define GPJ2CON 0xE0200280
#define GPJ2DAT 0xE0200284
.global _start
_start:
// 第1步:将0x00001111写入0xE0200280位置(GPJ2CON)
// 即设置GPJ2CON0~GPJ2CON3共4个引脚为输出模式
ldr r0, =0x00001111
ldr r1, =GPJ2CON // ldr伪指令
str r0, [r1] // 寄存器间接寻址,把r0中的数写入到以r1中的数为地址的内存中去
// 第2步:将0b00001010写入0xE0200284位置(GPJ2DAT)
// 即设置GPJ2DAT0~GPJ2DAT3为0b00000101
ldr r0, =0b00001010
ldr r1, =GPJ2DAT
str r0, [r1]
b . // 死循环,程序停留在这里,.表示当前指针的地址
// 裸机程序是直接在CPU上运行的,CPU会逐行运行裸机程序直至CPU断电关机
// 如果裸机程序全部被执行完了CPU就会跑飞(跑飞结果未定义)
// 为了不让CPU跑飞即在整个裸机程序执行完后添加死循环程序参考自:http://blog.csdn.net/rston/article/details/51065661
编写Makefile:
all: start.o
arm-none-linux-gnueabi-ld -Tgecboot.lds -o gecboot.elf $^
arm-none-linux-gnueabi-objcopy -O binary gecboot.elf gecboot.bin
%.o : %.S
arm-none-linux-gnueabi-gcc -g -c $^
%.o : %.c
arm-none-linux-gnueabi-gcc -g -c $^
.PHONY: clean
clean:
rm *.o *.elf *.bin执行:make
生成 gecboot.bin文件。
通过dnw下载数据
将uboot下载到内存中运行,这里参考了GEC210开发板附带的《GEC210开发板使用快速入门文档》里的下载过程,所以下面的操作可能只适用于GEC210开发板。
1.连接好串口线、USB线,将启动开关拨至SD-BOOT处(但不要插上SD卡,它会自动以USB启动),打开电源;
2.打开另外一个终端,进入dnw.c所在文件夹,修改dnw.c中load_addr的地址为0xd0020010,保存,编译:
gcc -o dnw dnw.c
PS:0xd0020010为gec210_usb.bin文件下载地址,该文件初始化210处理里的相关寄存器;
0x23e00000为uboot、内核、文件系统等文件烧写地址
把gec210_usb.bin复制到linux中,执行:
./dnw gec210_usb.bin
显示结果:
3.重新修改dnw.c,load_addr为0x23e00000,保存,编译,
执行
./dnw /gecboot.bin
出现如下结果的同时,可观察到GEC210开发板上2个LED灯亮起。
至此,DNW已可正常在linux下使用。
诺出现“can not open /dev/secbulk0”,可能是未获得root权限,或者尝试重新编译secbulk。
补充:在linux下,可通过kermit串口工具实现串口linux输出。
安装kermit:
sudo apt-get install ckermit配置:
gedit ~/.kermrc添加如下内容:
set line /dev/ttyUSB0 //我用的是USB转串口 如果是串口的话是ttyS0
set speed 115200
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5
c
保存退出。
连接开发板,通电,先
ls /dev/ttyUSB*找到开发板串口号,如果不是ttyUSB0,则修改~/.kermrc中的相应端口号。
终端中输入kermit,出现
则成功连接,接下来如有什么操作,可以在这个终端上显示串口输出信息。
若出现:SET SPEED has no effect without prior SET LINE ,可能是以下情况
1.没有以root运行,kermit需要以root身份运行。也可以普通用户用sudo来执行,但在我的机子上,普通用户执行sudo kermit会提示“sudo:kermit:command not found”,此时,kermit用绝对路径可解决问题:sudo /usr/local/bin/kermit
2.有另一个终端已经运行了kermit,占用了串口,此时也会出现Locked by process的提示。可以通过ps -aux|grep kermit 来查看是否有其他进程在使用kermit。
3.串口设备名称不匹配。在kermrc配置中的设备名称为ttyUSB0,但有时候可能为ttyUSB1。可通过ls /dev 来查看设备名称,并根据实际情况更改配置文件。
终端当前操作:ctrl + \ + c
退出kermit: ctrl + \ + z
linux虚拟机 dnw,linux下安装及使用DNW相关推荐
- Linux(ubuntu)下安装anaconda(64位)并配置jupyter notebook远程访问
Linux(ubuntu)下安装anaconda(64位)并配置jupyter notebook远程访问 Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180 ...
- wireshark使用教程 linux,Linux入门教程:ubuntu下安装wireshark(以及配置非root),这个强大的工具可以捕...
Linux入门教程:ubuntu下安装wireshark(以及配置非root),这个强大的工具可以捕 Wireshark是世界上最流行的网络分析工具.这个强大的工具可以捕捉网络中的数据,并为用户提供关 ...
- linux系统(ubuntu)下安装exe文件
linux系统(ubuntu)下安装exe文件 昨天将家中的旧笔记本翻出来安装了ubuntu20.04.1,想在电脑中安装exe文件时,不能直接打开. 于是借鉴网络中的方法(https://blog. ...
- 永久解决Linux(Ubuntu)下安装CH340驱动问题
永久解决Linux(Ubuntu)下安装CH340驱动问题 出现的问题 出现的问题 当我们用make对CH340的文件进行构建的时候,大多数情况是会报这样的错误 下面提供一种永久解决的方法 首先打开下 ...
- 在Linux、ubuntu 11下安装无线网卡 、杂牌无线网卡、ndiswrapper的使用
本片文章是之前在百度空间所写的(2011-10-11),由于百度空间已无法浏览.考虑本文还有一定实用性,固转载至此. 原百度链接:http://hi.baidu.com/ccboyhi/blog/it ...
- Linux和Windows系统下:安装Anaconda、Paddle、tensorflow、pytorch,GPU[cuda、cudnn]、CPU安装教学,以及查看CPU、GPU内存使用情况
Linux和Windows系统下安装深度学习框架所需支持:Anaconda.Paddlepaddle.Paddlenlp.pytorch,含GPU.CPU版本详细安装过程 1.下载 Anaconda ...
- VMware虚拟机里centos7下安装mysql5.6并授权远程连接Navicat
正文内容 这节来安装Mysql5.6,并远程授权连接本地windows的Navicat,可以根据以下步骤安装.此文章为自己收藏,必要时拿出来直接用的,有需要的友友可以查看查看的.文章图片有借助于网络的 ...
- Linux 64位 CentOS下安装 Docker 容器,启动、停止
一.Docker简介 Docker 提供了一个可以运行你的应用程序的封套(envelope),或者说容器,是轻量级的"容器引擎+映像仓库",在LXC(linux轻量级容器)的基础上 ...
- mssql linux版本,在 Mac 下安装 MSSQL for Linux
我的开发环境一直是 Mac,最近一个项目要用到 MSSQL,因此开始尝试直接在 Docker for Mac 下运行 MSSQL for Linux 版本(之前只能在 Windows 环境下安装 MS ...
- centos 下安装mysql,linux(Centos7)下安装mysql8.0.18的教程图解
1 获取安装资源包 mysql-8.0.18-1.el7.x86_64.rpm-bundle.tar 提取码: rsif 2 在/usr/local目录下新建目录mysql8 3 将下载的资源包(my ...
最新文章
- PCL:英文参考链接
- 海康威视 | AI算法实习生招聘(3D检测/分割/多模态融合)
- Visual Studio 2010 and .NET 4 RTM中文版发布
- python接口自动化测试框架(post提交添加变量)
- 忙里偷闲看了几部片子
- HSRP和VRRP在企业网中的应用
- cent os数据库安装
- 斯坦福大学深度学习与自然语言处理第一讲引言
- div超出部分滚动并且隐藏滚动条
- c语言指针字符串逆序存放,C语言指针实现字符串的反转
- 深入解析ext2文件系统之mke2fs
- springboot入门(项目)
- iphone4 base64 mp3 无法解析 html5,javascript - 如何使用HTML5在firefox上播放base64音频数据? - 堆栈内存溢出...
- java向Excel文件写入数据
- navicat中看sql执行计划
- 网课答题查询助手 内置多个接口
- qq音乐Java应用240320_TM320240E中文资料及应用电路
- (WSI分类)WSI分类文献小综述
- Nofollow标签的写法以及运用
- dhcp计算机毕业论文,计算机网络毕业设计(论文)dhcp在校园网中的应用.pdf
热门文章
- FreeTextBox编辑框遇到的问题
- 史上z..zui难回答的26个问题(1)
- script for kettle send mail contect
- 《面向对象分析与设计》一3.7 例题
- 嵌入式系统与普适计算
- 神经同步预测儿童学习新单词的能力
- 全国计算机高级技工查询,高级技工证查询
- Golang创建DLL
- 台式计算机网卡驱动不能正常使用,系统提示“您的网卡驱动程序不正常!”怎么办 是什么原因...
- 一文带你轻松掌握多种编程范式