JZ2440之GPIO篇

时间:2022-12-14 19:13:09

买来开发板已经有一段时间了,刚接触时兴奋至极,后来跟着视频看下去发现似乎自己并没有学到太多东西,于是发现自己可能欠缺的太多以致从课程中无法提取出重要的东西来,所以并没有得到太多的营养成分。因此我个人认为我们还是有必要通过进行实验,在过程中边做边学,这样慢慢进行储备自己的知识。今天我先从GPIO实验进行总结和归纳出自己遇到的一些问题。

 

  首先我们要在linux下进行程序的开发,然后将程序发送到windows下,并通过USB转串口烧录到我们的开发板上进行运行,那么在进行一个实验之前首先要将自己的工具准备好,这样才能正常进行下去。

  关于我个人而言,在之前我是通过windows下的串口工具secureCRT,该工具可以进入uboot的界面,通过uboot界面的一些选项来进行下载,通过dnw工具进行文件的传送,它是一个usb工具,可以通过它对具有usb下载功能的bootloader。对于串口工具的使用,我们需要进行安装串口驱动(我看了开发板上使用的是PL2303TA芯片,这里应安装相应的驱动PL2303),我们也可以通过驱动精灵进行安装。对于dnw也需要进行驱动的安装,我这里通过一个zadig软件进行安装的。

  实验一:led1的点亮(汇编语言进行编写)

   (1)首先我们看一下led原理图

     JZ2440之GPIO篇

         从上图来看,led是上拉方式

     JZ2440之GPIO篇

       led对应着s3c2440的三个管脚(GPF4,GPF5,GPF6)

    (2)这里要使用到的寄存器有GPFCON和GPFDAT,通过读写寄存器的地址来访问寄存器,其中GPFCON可以进行设置引脚的输入输出以及中断等功能,改变GPFDAT相应位可以改变引脚电平状态。

    (3)相关的信息

         寄存器地址:

           GPFCON:0x56000050

           GPFDAT: 0x56000054

         GPFCON控制相应引脚的位:

           GPF4: [9:8]

           GPF5: [11:10]

           GPF6: [13:12]

    (4)程序:

led.S

.text                       @代码段

.global _start              @全局函数

_start:

    ldr  r0,0x56000050

        mov  r1,#0x00000100

        str  r1,[r0]

        ldr  r0,0x56000054

        mov  r1,#0x00000000

        str  r1,[r0]

halt_loop:

      b  halt_loop

Makefile:

led.bin: led.S

  arm-linux-gcc -g -c -o led.o led.S              //编译不链接

  arm-linux-ld -Ttext 0x00000000 -g led.o led_elf //链接(指定运行地址)

  arm-linux-objcopy -O binary -S led_elf led.bin

clean:

  rm -f  led_elf led.bin *.o

    (5)我们进行make后,就生成了led.bin文件,然后烧录到开发板中,切换nand启动,nand前4k的代码就被复制到SRAM中开始执行,这样就可以看到现象了,如果没有现象的话,再进行分析,查找原因 

通过本次实验的同时也遇到了许多的拦路虎,然后就进行下一环节我将进行归纳:

 

  工具的准备过程中:

  1》由于我使用的是学校的局域网,笔记本电脑上仅仅支持无线网卡,没有路由,不能使用tftp方式进行文件的上传,于是就尝试使用dnw进行文件的上传。在dnw驱动的安装过程中,我第一次使用的是百问网的dnw驱动,该驱动由于未知原因不能正常使用。于是在群中进行探讨,他们使用的是新版本的dnw v5.2,使用了几天后又出现问题。我发现有可以在linux下的dnw_for_linux和dnw一样的效果,并且可以在linux下直接文件上传,通过linux下的超级终端minicom进行对uboot界面进行控制。于是乎我有开启了这条小路,但是小路不好走,最终败在minicom下的乱码。无奈之下我又试了一下原先方法,最后我居然成功了。

  远水不解近渴,我还是先用这种方法进行学习吧,毕竟浪费了我两天多的时间。我列出下面的问题,如果有解决的博友们,希望你们可以可以留言告知我(下面留言或扣扣:2582305540),在这里谢谢各位了。

  首先是dnw_for_linux的安装:

    dnw_for_linux下载地址:http://linux.linuxidc.com/

    参考文档:http://www.linuxidc.com/Linux/2011-12/48966.htm

              http://blog.csdn.net/u011452544/article/details/39393857

              http://www.linuxidc.com/Linux/2011-12/48961.htm

   

    1># tar xvf dnw_for_linux.tar.gz 对压缩包进行解压

  注意:secbulk目录下是PC端USB驱动, dnw目录是下载工具

   

    2># cd /mnt/hgfs/file/dnw_for_linux/secbulk/  --打开secbulk

      # make -C /lib/modules/2.6.31-14-generic/build/(此处是空格) M=/mnt/hgfs/file/dnw_for_linux/secbulk/        --切换到上面的目录,编译usb驱动模块

  注意:2.6.31-14-generic是我的当前内核启动版本  

   

    3>编译好后会出现secbulk.ko文件  # ls

JZ2440之GPIO篇

4># sudo insmod ./secbulk.ko  --加载模块到Linux内核

   

    注意:每次开机都要加载一次那个.ko模块,大家可以自己将它写到开机脚本里,省去了每次都要手动加载的麻烦!

      # dmesg                      --查看是否加载成功

JZ2440之GPIO篇       

     看到这样两行就说明成功了...

     5># cd ../dnw# gcc -o dnw dnw.c   --编译dnw工具

     6># sudo cp dnw /usr/local/bi     --将文件copy到/usr/local/bin目录

     7>这样就可以在shell下面直接使用dnw命令了

     8>在minicom的输出信息Enter your selection:               n                                            USB host is connected. Waiting a download. 

     9>此时,打开另一个终端:# sudo dnw 1.binlibing

                            @ubuntu:~$ sudo dnw 1.binfile

                            name : 1.binfile size : 1214004 bytesWriting data...100%

    

    我安装之后出现下面的问题在shell界面进行下载时出现了can not open /dev/secbulk0

 JZ2440之GPIO篇

 于是乎我通过百度得知是因为dev下没有对应设备文件secbulk0,解决办法:

  

   1>#cd /mnt/hgfs/file/dnw_for_linux/secbulk/   --进入secbulk文件夹中,里面有一个secbulk.c的文件

   2>#...vi secbulk.c

   3> 查看里面的主设备号和次设备号是否和自己使用的产品一致

  JZ2440之GPIO篇

   4>将开发板与PC 连好SD卡启动进入bootloarder如果是菜单模式随意选择一个下载指令如果是命令模式则输入dnw 050008000(地址随意),在linux命令行输入lsusb 这时会出现一串的usb设备,查看自己的设备进行相应的修改,上图中第一个是主设备号,第二个是次设备号

  这里我lsusb后发现没有自己的设备,经自己和他人进行交流发现要在虚拟机中进行  虚拟机->可移动设备->进行串口与虚拟机的链接(这样就和主机断开了),然后进行lsusb后就可以看到自己的设备号了。。。我使用是2440,设备号是上图中的。

  

  对于dnw_for_linux已经安装成功后,我们需要安装linux下的minicom进行串口通信:

   1># sudo apt-get install minicom  --安装minicom

   2># sudo apt-get install lrzsz    --安装lrzsz(在通过串口用xmodem协议烧写内核 时会提示没有xmodem协议,所以这时就要安装lrzsz软件包了)

   3>这样就可以使用minicom进行通信了。

进行minicom的配置:

   1># sudo minicom -s

   2>选择Serial port setup

   3>按下a键,修改/dev/ttyS0后回车   --选择UART0

   4>按下e键,修改波特率115200 8N1

   5>按下f键,将Hardware Flow Contro修改为NO,在刚才主菜单中选择Save setup as dfl,保存为默认配置,最后选择Exit from minicom,退出配置菜单

开发板与电脑进行串口线的连接后在minicom中使用命令 sudo minicom进入minicom界面就可以了。

  这里我遇到的问题是:

   (1)minicom配置好后出现can not open /dev/ttyusb0  

        JZ2440之GPIO篇

       --解决办法在虚拟机的可移动设备中将串口线选择“连接”,这样在/devx下就会出现ttyusb0

       JZ2440之GPIO篇

   (2)minicom出现乱码

       JZ2440之GPIO篇

       --暂时没有得到解决

       我在网上寻找了已经解决的方法:

          《1》换一根好的串口线

          《2》升级minicom版本,然后通过 “-R”可以进行自动格式转换

       起初我设置了一下编码格式,并没有改善,如果有朋友有这方面的解决经验,希望能够分享一下,在此谢谢了。 

JZ2440之GPIO篇的更多相关文章

  1. 树莓派4硬件---GPIO篇

    树莓派拿到手已经两个多月了,其实从最开始的期待安装好ROS,到前几天完成了ROS的源码编译安装,对linux的调教也时花了些时间的.现在终于想起来,树莓派上还有GPIO,还没有用过了.说干就干,开始. ...

  2. TGL站长关于常见问题的回复

    问题地址: http://www.thegrouplet.com/thread-112923-1-1.html 问题: 网站配有太多的模板是否影响网站加载速度 月光答复: wp不需要删除其他的模板,不 ...

  3. JZ2440 裸机驱动 第5章 GPIO接口

    本章目标:     掌握嵌入式开发的步骤:编程.编译.烧写程序.运行     通过GPIO的操作了解软件如何控制硬件 5.1 GPIO硬件介绍     S3C2440A有130个多功能输入/输出口引脚 ...

  4. RK3399/NanoPC-T4开发板使用/sys/class/gpio操作外接GPIO设备-【申嵌视频-RK3399篇】

    实验2:RK3399/NanoPC-T4开发板使用/sys/class/gpio操作外接GPIO设备,比如外接一个LED模块,通过GPIO1_A0管脚 1 介绍   LED模块   Matrix-LE ...

  5. Hi35xx 通用GPIO 使用篇(板子3G电源控制脚说明)

    在一个嵌入式系统中使用最多的莫过于 通用输入输出 GPIO口.看到论坛中经常有朋友问海思为什么没有提供GPIO驱动.其实不然. 在海思SDK  xxx/osdrv/tools/board_tools/ ...

  6. STM32 HAL库学习系列第2篇 GPIO配置

    GPIO 库函数 基本就是使用以下几个函数 GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void H ...

  7. DSP5509的GPIO学习-第5篇

    1. 使用CCS V6.1版本,目前已经不局限于仅仅把实验搞清楚了,要深入去探究内部的原理,本章看下GPIO实验 2. 在CCS启动的时候,提示,这个问题是什么,XDAIS是什么?XDAIS (eXp ...

  8. 硬件——nrf51822第一篇,GPIO的使用

    未完,待续...... 本实现是基于一个开发箱,包括:综合应用开发系统主板XT-EDU-AK   1套: 手持终端系统 XT-EDU-HK 1套: GPIO操作 工程: 这是一个关于流水灯的程序: 我 ...

  9. ESP8266 LUA脚本语言开发: 外设篇-GPIO中断检测

    https://nodemcu.readthedocs.io/en/master/modules/gpio/#gpiomode 测试引脚 GPIO0 gpio.mode(,gpio.INT) func ...

随机推荐

  1. [DOM Event Learning] Section 4 事件分发和DOM事件流

    [DOM Event Learning] Section 4 事件分发和DOM事件流 事件分发机制: event dispatch mechanism. 事件流(event flow)描述了事件对象在 ...

  2. Javascript 固定表格表头

    遇到一个简单的需求: 客户有一个表格可能有很多内容,当内容很多的时候,表格就会出现滚动条 客户希望当表格内容很多时,只滚动表格而不滚动浏览器窗口 在网上找到很多相关的插件,要不就是太复杂,要不就是满足 ...

  3. 用DTD约束XML详解及示例

    文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. dtd的三种引入方式    (1)引入外部的dtd文件 <!DOCTYPE 根元素名称 SYSTE ...

  4. Android基础学习之context

    Context既是环境变量,也是句柄(handler),也是上下文.类似用使用工具的工具,比如写字来说,笔是工具,Context可以看成是手,用来使用笔.context具有唯一性,具有很多种行为(定义 ...

  5. 转&colon; Apache开启gzip

    Apache开启gzip gzip是什么 HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术.大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度. 这一般是指WWW服务器 ...

  6. android studio 工程设置项

    1.在<工程根目录>\build\generated文件夹中 存在 xxx.jar 这个文件是用来做单元测试用的,但该功能目前还处于实验阶段,不想用可以关了. 去掉勾后,clean一下工程 ...

  7. maven仓库--搭建局域网私服(windows版)

    使用nexus搭建局域网私服 一. 认识maven仓库 1.1 maven仓库的作用   回想之前不用maven的时候,我们用eclipse原始的项目骨架构建项目时,在工程目录下往往有一个lib文件夹 ...

  8. &lbrack;转载&rsqb;历上最强的音乐播放器(jetAudio-8&period;0&period;5&period;320-Plus-VX

    原文地址:历上最强的音乐播放器(jetAudio-8.0.5.320-Plus-VX-完全汉化版)下载作者:盖世天星 历上最强的音乐播放器(jetAudio-8.0.5.320-Plus-VX-完全汉 ...

  9. pandas 对数据帧DataFrame中数据的索引及切片操作

    1.创建数据帧 index是行索引,即每一行的名字:columns是列索引,即每一列的名字.建立数据帧时行索引和列索引都需要以列表的形式传入. import pandas as pd df = pd. ...

  10. Exception in thread &quot&semi;main&quot&semi; java&period;lang&period;IllegalStateException&colon; Failed to read Class-Path attribute from manifest of jar file&colon;

    表示jar所在位置文件夾中沒有下載好,將目標目錄刪除,重新maven下就好了