ok6410[002] ubuntu1604系统下搭配ckermit和dnw基于RAM的裸机程序调试环境
ubuntu1604系统下搭配ckermit和dnw基于RAM的裸机程序调试环境
系统: ubuntu16.04
裸板: 飞凌公司OK6410开发板
目标:搭建基于ubuntu1604系统和基于RAM的裸机程序开发环境
1、安装配置ckermit
在ubuntu1604下一般做裸板开发时都是使用ckermit作为远程通讯终端,下面我们就开始讲解下其安装与配置。
1.1、安装ckermit
在ubuntu系统下安装ckermit,使用
sudo apt-get install ckermit
即可实现自动安装。
1.2、配置
在当前用户的根目录下,即~所指向的目录,例如:/home/alston,这个目录就是我的根目录,这里的alston是我当前用户名。
在用户的根目录中创建[.kermrc]文件,并在该文件中,填入如下内容:
set line /dev/ttyUSB0set speed 115200set carrier-watch offset handshake noneset flow-control nonerobustset file type binset file name litset rec pack 1000set send pack 1000set window 5
2、配置安装dnw的下载环境
2.1、安装dnw
这里的安装dnw其实就是从网站上下载【dnw4linux-master.zip】,并把这个文件解压到一个目录中。
【下载地址: https://github.com/Qunero/dnw4linux】
下载完代码后,一定要阅读里面的README
1、源码说明:
本源代码收集自网络,经过整理和加入宏定义,使其适用于OK6410开发板;对
源码进行了适当的注释和错误纠正;同样以GPL协议发布;
2、使用说明:
2.1 编译
直接在解压后的目录中make即可;然后在对应的子目录中可以找到编译好的文件;
更方便的做法:make install 会直接将相关文件编译好,然后放到当前目录下,
编译好的文件为:
dnw --- 用于传输数据的软件,用法: dnw filename
secbulk.ko --- 识别下载用USB的驱动; 用法: sudo insmod secbulk.ko
2.2 自动化
在编译成功后,完成下列步骤方面以后使用:
2.2.1 将dnw放到系统路径: sudo cp dnw /usr/sbin/
2.2.2 将secbulk.ko驱动设为自动加载:
先在住目录建立mydriver目录:mkdir ~/mydriver
将驱动放入自定义mydriver中:cp secbulk.ko ~/mydriver/
修改/etc/rc.d/rc.local文件,末尾加入: sudo insmod $HOME/secbulk.ko
注意: 将上面的$HOME替换成实际的绝对路径,比如: /home/qulory
2.3 清理
直接执行make clean, 让你的源码目录干干净净;
2.4 使用
注意,当前编译好的dnw在32位linux可用,但是secbulk.ko驱动文件需要自己编译
必须同当前使用的内核的版本一致,内核版本升级后也需要重新编译;
3、移植帮助:
要成功移植到类似的开发板,需要以下2步:
3.1 驱动处理:
进入secbulk_driver子目录,修改文件secbulk.c中的关于DOWNLOAD_USB_ID_MAJOR
和DOWNLOAD_USB_ID_MINOR的宏定义,让其与你的usb对应,可以通过lsusb命令查看
获得该id的信息;
3.2 dnw下载地址的处理:
进入dnw_src目录,修改dnw.c文件中DOWNLOAD_ADDR的定义,将其设为你的开发板
的下载地址;
2.2、配置dnw
这里的配置dnw其实就是修改压缩包里的【secbulk.c】文件,修改其中的两个宏,获取要运行dnw的PC上的这两个宏值,使用lsusb获取如下

修改宏值如下:
#define DOWNLOAD_USB_ID_MAJOR 0x1a86#define DOWNLOAD_USB_ID_MINOR 0x7523
之后,退到压缩包的第一级目录,使用make install编译dnw和dnw的USB驱动。
编译好之后,生成的程序可以直接作用与OK6410开发板。
3、使用dnw下载裸机程序
给开发板刷入uboot程序即可,并切换到nand flash启动。
3.1、进入下载模式
打开两个终端,一个输入ckermit命令,打开串口调试,当开发板加载uboot时按下PC上的空格键,使其停在下载模式,输入以下命令:
SMDK6410# dnw 0x50008000
此时终端打印以下信息,说明USB连接成功,就等待你下载传输了。情况如下:

3.2、下载
在另外一个终端输入以下命令,下载文件:
$ sudo dnw -f /你要下载的文件路径/文件名
3.3、运行裸机程序
现在你的程序已经下载到内存当中了,如果你想在内存中运行你的程序,只需要输入下面一句命令即可:
SMDK6410# go 0x50008000
执行go后,系统开始启动uboot,相应的裸机程序也会随之运行,不过因我们只刷了uboot,故此,uboot会一遍遍的重启,导致,程序也会一遍遍的重启,故,我们可以在程序的最后键入一个死循环,这样可维持我们的程序执行之后的状态。
至此,dnw的介绍结束,因为之前研究过Linux下的dnw使用,至今已有好久没用了,此次记录,一是方便以后回顾,二是也希望给新手一个指导。
ok6410[002] ubuntu1604系统下搭配ckermit和dnw基于RAM的裸机程序调试环境的更多相关文章
- windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境
windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境 http://rongmayisheng.com/post/windows%E4%B8%8B%E7%94%A ...
- win10下搭建jz2440v3(arm s3c2440)开发及gdb调试环境【转】
本文转载自:https://blog.csdn.net/newjay03/article/details/72835758 本来打算完全在Ubuntu下开发的,但是水平有限,没有在Ubuntu下找到合 ...
- Linux系统下输出某进程内存占用信息的c程序实现
在实际工作中有时需要程序打印出某个进程的内存占用情况以作参考, 下面介绍一种通过Linux下的伪文件系统/proc 计算某进程内存占用的程序实现方法. 首先, 为什么会有所谓的 伪文件 呢. Linu ...
- Windows7系统下OpenCV2.4.4+PCL1.6.0+SSBA3.0+VS2010 IDE32环境下编译和安装以实现Sfm和PCL点云数据可视化
最近在学习<深入理解OpenCV:实用计算机视觉项目解析>一书的第三章和第四章时,遇到很多编译问题,书中又没有详细的讲解环境配置和搭建过程.经过多天的捉摸.调试.排错终于将两章的程序都调试 ...
- Ubuntu系统下实现Android工程调用独立编译的C++程序和GMP、PBC库
目的: 实现使用C++编写代码供Android工程调用.C++代码中可以使用STL库,也可以使用常用的由源码编译生成的库,如PBC.因为PBC是基于GMP库的,所以这里只记录了GMP和PBC库的编译安 ...
- Windows200864位操作系统下的SQLPLUS.EXE 无法找到入口解决办法和Oracle环境变量的设置
本机环境:Windows2008 64位中文版操作系统+Oracle11G+安装了Oracle32位和64位客户端驱动 问题起源:Path环境变量被360安全卫士优化修复后,整个给清空了,hosts文 ...
- mac OS X下PhpStorm+MAMP PRO+Xdebug+FireFox集成开发和断点调试环境配置
一.环境及软件 1.macbook pro 2.Phpstorm 3.MAMP PRO 4.FireFox 二.环境搭建 1.PhpStorm导入项目 下载PhpStorm并安装,网上随便找个注册码即 ...
- OpenGL在 win8 64bits系统下的配置
1 program files(x86)与program files 在64位系统下,为了更好的兼容32位程序,在安装一些32位程序(注意某些程序他就是32位的),会默认扔到program files ...
- linux 系统下java开发环境的配置
在安装之前,确保你的linux系统下有 jdk,jboss等相关软件 一.配置JDK环境变量 步骤: 解压缩JDK文件: unzip jdk1.6.0_31.zip 目录下显示文件夹jdk1.6.0_ ...
随机推荐
- python的dbutil
目录机构如下: dbutil代码如下: #!/usr/bin/python # -*- coding:utf-8 -*- import configparser import pymysql clas ...
- mybatis如何传入一个list参数
<!-- 7.2 foreach(循环List<String>参数) - 作为where中in的条件 --> <select id="getStudentLi ...
- 应用defineProperty简单实现vue的双向数据绑定
双向数据绑定简易版本如何应用defineProperty的getter setter 方法 有这样HTML片段 <input type="text" id="dem ...
- JAVA特性面试题:
1.简要介绍java程序的健壮性. 答:JAVA程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏. 2.为什 ...
- 【dll】关于__declspec的简记,由两个单词缩写而来!(转)
关于declspec的一点说明 我遇到这个单词总觉得记不住,时间一长就忘了.今天在复习dll的时候又遇到了这个单词,我感觉应该是两个单词的缩写,但又不敢确定,特地发帖网上求助,得到两位高手的帮助.下面 ...
- 共享内存之——mmap内存映射
共享内存允许两个或多个进程共享一给定的存储区,因为数据不需要来回复制,所以是最快的一种进程间通信机制.共享内存可以通过mmap()映射普通文件 (特殊情况下还可以采用匿名映射)机制实现,也可以通过sy ...
- LeetCode OJ——Unique Binary Search Trees II
http://oj.leetcode.com/problems/unique-binary-search-trees-ii/ 一题要求得出所有树的种类数,二题要求得出所有树. 在一题的基础上修改代码, ...
- 从 React Router 谈谈路由的那些事
React Router 是专为 React 设计的路由解决方案,在使用 React 来开发 SPA (单页应用)项目时,都会需要路由功能,而 React Router 应该是目前使用率最高的. Re ...
- 关于xcode 9.0数组问题的遇到的坑
1.最近一直在忙着做项目,今天就来总结最近这段时间遇到的一些比较麻烦的问题.有时候也是颇感无奈. 有句话说的好.人不要总在一棵树上吊死.去旁边那棵树上也可以试试.好了不扯了.直接进入正题吧! 先来阐述 ...
- 焦作F Modular Production Line 费用流
题目链接 题解:这道题比赛的时候,学弟说是网络流,当时看N这么大,觉得网络流没法做,实际本题通过巧妙的建图,然后离散化. 先说下建图方式,首先每个覆盖区域,只有左右端点,如果我们只用左右端点的话,最多 ...