首页 > 其他分享 >测试

测试

时间:2024-03-30 16:44:48浏览次数:10  
标签:设置 引脚 GPIOx PAD 测试 寄存器 IOMUXC

编写驱动程序

  1. 确定主设备号
  2. 定义自己的file_operations结构体
  3. 实现open/write/read等函数,填入file_operations结构体
  4. 把file_operations结构体告诉内核:注册驱动程序register_chrdev(主设备号, 次设备号,&file_operations)
  5. 注册驱动程序时,需要调用一个入口函数
  6. 卸载驱动程序,需要调用出口函数
  7. 其他完善:提供设备信息,自动创建设备节点
    编写字符设备驱动程序时可以参考/drivers/char/misc.c
    LED硬件知识
    看原理图确定控制LED的引脚
    [图片]
  • 完成以上四步需要读写寄存器,注意不要影响到其他位:
    • 在操作GPIO时,应该按照读状态——修改状态——写入状态的步骤(防止影响其他位),但是这样比较低效
    • 有些处理器有设置寄存器(set_reg)和清除寄存器(clr_reg),可以直接操作这两个寄存器的位进行GPIO状态的修改(set-and-clear protocol)
      看主芯片手册确定如何设置/控制引脚
      [图片]
      [图片]
      CCM
  1. 设置CCM_CCGRx寄存器中某位使能对应的GPIO模块,默认是使能的
  • 以CCGR0为例,CG15的取值如下:
    [图片]
    • 00:在所有的模式下GPIO2都是禁止的
    • 01:当CPU处于运行模式时GPIO2是使能的,如果CPU是等待或者停止状态,GPIO2是禁止的
    • 10:保留值
    • 11(默认值):除了停止状态,其他状态GPIO2都是使能的
      IOMUXC
  1. 使用IOMUXC_SW_MUX_CTL_PAD_或者IOMUXC_SW_MUX_CTL_GRP_来设置一个或一组引脚的功能
  • 以IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00为例,设置其中的MUX_MODE(选择ALT5工作于GPIO模式):
    [图片]
  1. 使用IOMUXC_SW_PAD_CTL_PAD_<PAD_NAME>或者IOMUXC_SW_PAD_CTL_GRP_来设置一个或一组引脚的参数
    GPIO
    基地址Base address 可以查看芯片手册的Chapter2
  2. GPIOx_GDIR寄存器:方向寄存器,每一位代表一个引脚
  • 0:输入
  • 1:输出
  1. GPIOx_PSR:读引脚的值(GPIOx_GDIR设置为0时)
    如果GPIOx_GDIR设置为输入0,对GPIOx_DR读访问会返回GPIOx_PSR的值,所以读GPIOx_DR或者GPIOx_PSR都是可以的
  2. GPIOx_DR:写引脚的值(GPIOx_GDIR设置为1时)
    如果GPIOx_GDIR设置为输出1,读GPIOx_DR的值只是上次设置的值,如果想要读取引脚的真实电平,可以设置该引脚为loopback模式(通过设置IOMUXC_SW_PAD_CTL_PAD_<PAD_NAME>),这样就可以从GPIOx_PSR寄存器读取到真实的电平值了(这个可以用于调试)

标签:设置,引脚,GPIOx,PAD,测试,寄存器,IOMUXC
From: https://www.cnblogs.com/jll133688/p/18105700

相关文章

  • [web]: HTML 测试模板
    [web]: HTML 测试模板    一、HTML 测试模板内容 <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>测试模板</title><scriptsrc="https://code.jquery.com/jquery-3.7.1.min.js"></script&g......
  • 圈复杂度和可测试性
    最好用的C++圈复杂度分析工具:pipinstalllizard,没想到它解析C++的函数块超级快,可以用来作为建立进一步的代码片分析的基础,完胜其他所有工具。我花了1天多将一个C++模块测试覆盖率做到100%,对于代码如何才具有良好可测试性有了直观的经验,从测试的角度看代码的设计是否简洁是一个......
  • 经典Prompt欣赏 - 给代码生成单元测试
    在Twitter上看到一段给代码生成单元测试的Prompt:https://twitter.com/mattshumer_/status/1773385952699789808虽然它是针对Claude3的,但理论上来说可以适用于绝大部分模型。Prompt如下:<prompt_explanation>Youareanexpertsoftwaretestertaskedwiththoroughlytest......
  • 经典Prompt欣赏 - 给代码生成单元测试
    在Twitter上看到一段给代码生成单元测试的Prompt:https://twitter.com/mattshumer_/status/1773385952699789808虽然它是针对Claude3的,但理论上来说可以适用于绝大部分模型。Prompt如下:<prompt_explanation>Youareanexpertsoftwaretestertaskedwiththoroughlytest......
  • 一站式自动化测试工具——AI-TestOps
    一站式自动化测试工具——AI-TestOps1.背景介绍随着软件开发周期的不断缩短,软件质量保证变得越来越重要。自动化测试是提高软件质量的关键手段之一。然而,传统的自动化测试工具往往存在一些问题,如测试用例编写复杂、测试覆盖率低、测试结果分析困难等。为了解决这些问题,AI......
  • MogDB/openGauss 坏块测试-对启动的影响-测试笔记1
    MogDB/openGauss坏块测试-对启动的影响-测试笔记1在UPDATE操作提交后,脏块落盘前kill掉mogdb数据库,然后对UPDATE修改的坏进行以下破坏操作,仍然能够启动数据库,数据未丢失。1、用旧数据文件替换,可以启动2、修改成错误的checksum,可以启动3、数据块修改成错误的lsn,可......
  • Junit深入讲解(JAVA单元测试框架)
    1、此处用的是Junit5,此处pom文件需要引的依赖是<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.9.1</version><scope&......
  • 记一次对我的学校的微信小程序的渗透测试(短信轰炸+教师手机号泄露)
    0x01教师手机号泄露打开智慧校园小程序点进教师登录后发现,输入我老师名字后会显示尾号抓包,在response中得到完整的手机号手机注册那里填入抓到的手机号,便可以发短信验证码(填别的手机号会被前端的验证拦截并显示'该手机号不对,清核对信息',但验证是前端的[前端就是通......
  • 在使用PageHelper插件进行分页查询时,为什么在Postman进行后端测试时返回的data中对应
    注意:在使用PageHelper插件进行分页查询,由Postman进行后端测试时,需要根据返回的total(查询的总记录数)和测试设置的pageSize(每页记录条数)来设置page(查询页码)的值,否则后端测试返回的data中对应的rows可能为空。理由如下:假设此时是这样一个查询情景:通过动态SQL进行条件查询,......
  • MySQL - [06] 海贼王测试数据
     一、建表语句createtablerole(roleIdintnullcomment'角色id',namevarchar(32)nullcomment'姓名',apearNumvarchar(50)nullcomment'登场集数',addressvarchar(50)nullcomment'上传地点',......