NUC977 解决GPIO被复用

11 篇文章 0 订阅

在使用NUC977遇到gpio(GPB12)被复用,调试信息如下所示

[ 3.730000] Please Check GPIOB12's multi-function = 0xb 
[    3.760000] ------------[ cut here ]------------
[    3.760000] WARNING: at drivers/gpio/gpiolib.c:160 gpio_ensure_requested+0x6c/0xd8()
[    3.760000] autorequest GPIO-44
[    3.760000] Modules linked in: nuc970_lcd_matrix_ctrl(+)
[    3.760000] CPU: 0 PID: 396 Comm: insmod Not tainted 3.10.101 #209
[    3.760000] Backtrace: 
[    3.760000] [<c0011f34>] (dump_backtrace+0x0/0x10c) from [<c0012148>] (show_stack+0x18/0x1c)
[    3.760000]  r6:c01abd40 r5:00000009 r4:c3aebd68 r3:00000000
[    3.760000] [<c0012130>] (show_stack+0x0/0x1c) from [<c030b750>] (dump_stack+0x20/0x28)
[    3.760000] [<c030b730>] (dump_stack+0x0/0x28) from [<c001cba0>] (warn_slowpath_common+0x54/0x70)
[    3.760000] [<c001cb4c>] (warn_slowpath_common+0x0/0x70) from [<c001cbf4>] (warn_slowpath_fmt+0x38/0x40)
[    3.760000]  r8:00000001 r7:60000013 r6:0000002c r5:c041f2e8 r4:c0459ecc
r3:00000009
[    3.760000] [<c001cbbc>] (warn_slowpath_fmt+0x0/0x40) from [<c01abd40>] (gpio_ensure_requested+0x6c/0xd8)
[    3.760000]  r3:0000002c r2:c039ec3c
[    3.760000] [<c01abcd4>] (gpio_ensure_requested+0x0/0xd8) from [<c01abfbc>] (gpiod_direction_output+0x80/0x1a4)
[    3.760000]  r6:c3aea028 r5:c041f2e8 r4:c0459ecc r3:c01ad170
[    3.760000] [<c01abf3c>] (gpiod_direction_output+0x0/0x1a4) from [<c01ac0fc>] (gpio_direction_output+0x1c/0x20)
[    3.760000]  r8:c042ffe0 r7:00000000 r6:c3aea000 r5:bf000c14 r4:00000001
[    3.760000] [<c01ac0e0>] (gpio_direction_output+0x0/0x20) from [<bf003130>] (MatrixLcd_init+0x130/0x1a4 [nuc970_lcd_matrix_ctrl])
[    3.760000]  r4:00000000 r3:00000000
[    3.760000] [<bf003000>] (MatrixLcd_init+0x0/0x1a4 [nuc970_lcd_matrix_ctrl]) from [<c0008880>] (do_one_initcall+0x104/0x170)
[    3.760000]  r4:c3aebf44
[    3.760000] [<c000877c>] (do_one_initcall+0x0/0x170) from [<c005d708>] (load_module+0x1634/0x1d78)
[    3.760000] [<c005c0d4>] (load_module+0x0/0x1d78) from [<c005df30>] (SyS_init_module+0xe4/0xf8)
[    3.760000] [<c005de4c>] (SyS_init_module+0x0/0xf8) from [<c000ec60>] (ret_fast_syscall+0x0/0x34)
[    3.760000]  r6:bea1ce88 r5:00000000 r4:00000000
[    3.760000] ---[ end trace 297a8d8c3d2fba72 ]---
[    4.170000] Please Check GPIOB12's multi-function = 0xb 

解决方法
修改pinctrl-nuc970.c,如SPI做主机用,可屏蔽spi从机CS脚
//static const unsigned spi1_0_pins[] = {0x1C, 0x1D, 0x1E, 0x1F};
static const unsigned spi1_0_pins[] = {0x1D, 0x1E, 0x1F};

新唐NUC977是一款使用现代先进技术制造的嵌入式开发板,具有强大的计算和处理能力,适用于各种嵌入式系统的开发和应用。以下是关于新唐NUC977开发教程的简要介绍。 首先,新唐NUC977的开发需要使用特定的开发工具和软件环境。用户可以从新唐官方网站下载并安装开发工具包(如Keil MDK)以及其他必要的驱动程序和软件库。 其次,开发人员需要熟悉新唐NUC977的硬件架构和技术规格,了解其支持的接口和功能,以便正确地设计和编写应用程序。可以参考新唐NUC977的官方技术手册和开发者文档,这些文档包含了详细的硬件资料和开发指南。 在开始编程之前,建议开发人员先进行一些基本的准备工作。例如,配置开发环境、安装必要的驱动程序、创建项目文件夹等。这些准备工作的目的是确保开发环境的正常运行,并为后续的开发工作打下良好的基础。 接下来,可以开始编写应用程序代码。开发人员可以使用C语言或汇编语言来编写程序,根据具体需求选择相应的开发语言。在编写代码时,需要按照新唐NUC977的编程约定和规范进行,确保程序的正确性和稳定性。 完成代码编写后,就可以进行编译、链接和调试等工作。通过使用开发工具提供的编译器和调试器,可以对应用程序进行测试和调试,查找和修正潜在的错误和问题。 最后,将编译、链接和调试完成的应用程序下载到新唐NUC977开发板上进行运行和测试。在运行过程中,可以对程序进行性能优化和错误处理等工作,确保应用程序的稳定性和可靠性。 总之,新唐NUC977开发教程包括了准备工作、代码编写、编译链接和调试、运行测试等一系列步骤。通过熟练掌握和实践这些步骤,开发人员可以快速、高效地完成对新唐NUC977的开发工作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值