nios2移植uclinux修改enc28j60驱动成功加入网络

来源:互联网 发布:阿玛尼手表淘宝 编辑:程序博客网 时间:2024/04/28 00:35

移植的环境:

ubuntu12.10

quartus11.0sp1,NIOSII 11.0IDE sp1(win7)

fpga开发板采用的是黑金开发板cyclone四代


首先硬件配置



如果只是跑来玩玩可以不需要flash芯片,但这个ip core必须要有以后会用到;

图中的eth_cs可以不用添加,我是参考http://hi.baidu.com/xuxin_813/item/4cc6c6505017402b32e0a9cf的方法加入来控制网络芯片,结果根本用不到。



spi设置


timer设置


eth_irq中断设置


编译 

下载到板子

先用IDE写个hello world跑一下 看看不能正常运行 呵呵。


ubuntu编译内核:

参考alterawiki,我在当时没仔细看浪费了不少时间。。。

http://www.alterawiki.com/wiki/Install_Nios_II_Linux

很多地方都有说,不过我再来重复一下

sudo apt-get updatesudo apt-get install git-core git-gui make gcc ncurses-dev bison flex gawk \gettext ccache zlib1g-dev libx11-dev texinfo liblzo2-dev pax-utils uboot-mkimage corkscrew

选择bash

通过以下方式可以使 shell 切换回 bash:
$sudo dpkg-reconfigure dash
然后选择 no 或者 否 ,并确认。
这样做将重新配置 dash,并使其不作为默认的 shell 工具

确保gcc和cc一致,我使用gcc version 4.7.2

下载uclinux相关工具和内核

wget ftp://ftp.altera.com/outgoing/nios2-linux/20120802/*

wget ftp://ftp.altera.com/outgoing/nios2-linux/nios2gcc-20080203.tar.bz2

解压

for i in $(ls nios2-linux-*.tgz); do tar -xzvf $i;done

tar -xvf nios2gcc-20080203.tar.bz2

设置环境变量(这里必须到root下操作,不然会有错)

我直接修改 /etc/profile文件 加入

export PATH="$PATH:/XXX/nios2-linux/toolchain-build/build/nios2/bin"(xxx是你解压nios2gcc-20080203的目录)

然后运行

source /etc/profile

解压文件后必须转换工作平台

cd nios2-linux/linux-2.6git fetch origingit branch test-nios2 origin/test-nios2git checkout -f test-nios2

成功后运行make menuconfig 就不会出现有关nios2-linux-uclibc-gcc 的警告

进行如下操作

make menuconfig(先选择default all settings 确保能正常编译和运行)

make (报错忽略)

make vendor_hwselect SYSPTF=/xxx/yourptf.ptf

make

我遇到报错:

undefined reference to bzero
undefined reference to index
undefined reference to rindex

我手动修改了几个调用这几个函数的源文件,用相同功能的函数memset,strchr,strrchr代替,重新 make就不再提示错误了

再次make成功

make linux image

生成zImage(在uClinux-dist/linux-2.6.x/arch/nios2/boot目录下,需要复制到windows下altera的安装目录下的examples中 这是我的目录D:\altera\11.0\nios2eds\examples )通过nios2-download -g zImage 直接下载到sdram运行,成功后结果如下



修改enc28j60驱动:

修改linux2.6/arch/inos2/kernel/config.c


添加平台设备信息


在static struct spi_board_info nios2_spi_devices[] = {中添加有关enc28j60的spi设备


在drivers/net/enc28j60.c修改


重新make menuconfig(选择customize kernel settings 自定义内核)

device drivers--->

    [*] spi_support --->

          [*] altera spi controller

device drivers--->

     [*]network device support --->

          [*]ethernet (10 or 100mbit) --->

                 [*] enc28j60 support

[*]networking support --->

      netowrking options---->

           [*] packet socket

           [*] unix domain sockets

           [*]tcp/ip networking

还可以选择添加nfs功能

编译成功

下载

我的运行结果如下:



程序的固化可以使用如下命令

  1.elf2flash --input=zImage --output=xx.flash --base=0x..... --reset=0x..... --end=0x.... --boot=xxxx.srec

      (a).zImage就是编译好的uClinux内核映像,

   (b).xx.flash是这条命令输出的文件,

   (c).--base和--end分别对应flash芯片的基地址和结束地址.--reset是CPU复位地址,和--base相同.

   (d).xxxx.src是bootloader,可以从安装目录下的ip/altera_nios2下拷贝,名字是:boot_loader_cfi.srec

2.nios2-flash-programmer -g -c usb-blaster --base=0x... --program xx.flash

       usb-blaster是用到的下载电缆,-g表示下载后复位目标板,启动内核.

详见:http://blog.sina.com.cn/s/blog_3f8b06cc010159ed.html

目前还不能加入使用udhcpc这个命令发现busybox不能修改。


0 0
原创粉丝点击