只用串口和网络裸机开发ARM程序(OK6410开发板)

发布时间:2024-09-06  

最近要学习ARM开发板,想按着单片机的套路,首先开发裸机程序。百度了下,大部分的裸机程序都是用RVDS或者ADS开发,用JLink 或者JTag烧写到Sdram中去执行。由于在ubuntu下使用习惯了,想脱离集成开发环境,所以在Linux下使用arm-linux-gcc 等工具开发。首先遇到的问题就是开发好的二进制文件怎么烧到板子上运行呢?


百度上给出的大部分方法是通过Uboot 来烧写,用Uboot的DNW烧写进去,但是我用的环境是Win7 64bit,DNW的USB驱动死活装不上,而且,也懒得找别人借条OTG线,所以这个途径就不考虑了。继续google,找到了一种方法,通过Uboot的Tftp 功能把二进制文件烧写到开发板的指定内存处。这种方法只需要网络连接以及串口连接,更方便一些,所以决定选择这个方法。


首先在Ubuntu上搭建Tftp服务器(我的开发环境是:ubuntu 13.04 用来开发,win7 远程登录到Ubuntu 13.04,串口连接Win7 与 开发板,网络连接Ubuntu与开发板)。具体方法参考:http://www.2cto.com/os/201203/122887.html


1.1 搭建tftp服务器

TFTP(Trivial File Transfer Protocol,简单文件传输协议),是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场 合。TFTP协议专门为小文件传输而设计,只能从服务器上获取文件,或者向服务器写入文件,不能列出目录,也不能进行认证。

嵌入式Linux开发中,TFTP协议在很多场合都被用到,甚至是必不可少的,特别是在内核调试阶段,在U-Boot下通过TFTP协议从服务器上加载内核并运行,既方便又快捷。

一般的发行版默认都没有安装TFTP服务以及TFTP服务器。TFTP服务依赖于网络守护进程服务程序,可选择安装inetd或者升级版的xinetd, 然后安装tftp和tftp-server,接着修改或者创建/etc/xinetd.d/tftp配置文件,最后重启xinetd,启动TFTP服务。 无论采用什么发行版,TFTP服务器的安装都是这样的流程,只不过不同发行版的安装命令不同而已,下面以ubuntu为例进行说明。

安装xinetd:

ky@ubuntu:~$ sudo apt-get install xinetd

 安装tftp和tftpd:

ky@ubuntu:~$ sudo apt-get install tftp tftpd

或者安装tftp的增强版本tftp-hpa:

ky@ubuntu:~$ sudo apt-get install tftp-hpa tftpd-hpa

建立配置文件。建立/etc/xinetd.d/tftp文件,写入如下内容:

service tftp

{

        socket_type    = dgram

        protocol       = udp

        wait           = yes

        user           = root

        server         = /usr/sbin/in.tftpd

        server_args    = -s /var/tftpboot/

        disable        = no

        per_source     = 11

        cps            = 100 2

        flags          = IPv4

}


其中server_args设置的/var/tftpboot目录是tftp服务器的目录,设置其访问权限为777:

ky@ubuntu:~$ sudo mkdir -pv  /var/tftpboot/

ky@ubuntu:~$ sudo chmod 777 /var/tftpboot/

启动或者重启xinetd服务:

ky@ubuntu:~$ sudo /etc/init.d/xinetd start或者restart

本机测试。在/tftpboot目录下创建一个ky文件,启动另外一个终端,输入:

ky@ubuntu:~$ tftp 127.0.0.1

tftp> get ky     #获取ky文件

tftp> q                        #退出tftp


在终端输入ls命令,可以看到当前目录下看到ftp获取到的ky文件。

用开发板来验证tftp服务器是否可用。启动开发板,进入U-Boot命令行,用tftp命令加载tftp服务器中的文件,如:

U-Boot$ tftp 80008000 zImage

ENET:auto-negotiation complete

ENET:Link status up

ENET:FULL DUPLEX

ENET:100MBase

MAC: 00:61:62:69:6e:67

TFTP from server 192.168.1.3; our IP address is 192.168.1.5

Filename 'zImage'.

Load address: 0x80008000

Loading: #################################

done

Bytes transferred = 479927 (752b7 hex)

说明:

(1)使用开发板与虚拟机安装的客户系统进行TFTP通讯,需要将虚拟网卡设置为Bridged模式,并建议使用静态IP地址。

(2)如果以上设置都确认无误,但tftp还是不成功,请检查主机的防火墙是否已经关闭。


搭建好后:开发板上电,串口终端按任意键停留在Uboot 状态,进入Uboot输命令模式:


设置好Uboot的IP地址,网关等并保存。即可开始使用tftp 命令下载二进制文件进开发板。


设置Uboot的IP等参数主要参考:http://www.linuxidc.com/Linux/2013-05/84302p4.htm


mini2440烧写裸机程序


6.1 进入Uboot命令行

 

6.2 使用tftp下载.bin文件

 

6.2.1 设置开发板

 

printenv

 

setenv ipaddr192.168.1.100    // 开发板IP

 

setenv serverip192.168.1.101  //Windows IP

 

setenv gatewayip192.168.1.1    // 网关

 

saveenv

 

6.2.2 把uImage放到tftpboot目录下,自动加载

 

烧写XX.bin到nand Flash

 

将XX.bin拷贝至/tftpboot/

 

在SecureCRT中依次输入:

 

SMDK2440A>tftp 0x30000000 XX.bin

 

SMDK2440A>nand erase0x0000 0x40000

 

SMDK2440A>nand write0x30000000 0x00000 0x400000

 

6.3 重启开发板


U-Boot源代码下载地址 http://www.linuxidc.com/Linux/2011-07/38897.htm


如: tftp 0x50000000 led_on_c.bin


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>