标签: embedded-linux

如何在嵌入式系统上调试内核oops

我在嵌入式开发中遇到了一个串口问题./ dev/ttyS0,/ dev/ttyS2和/ dev/ttyS3都可以正常工作而没有问题.但在某些情况下,访问/ dev/ttyS1会抛出以下两个"oops"消息.

我不知道在哪里开始追踪原因,你能帮忙吗?

1

Unable to handle kernel NULL pointer dereference at virtual address 0000013c
pgd = c0004000
[0000013c] *pgd=00000000
stopped custom tracer.
Internal error: Oops: 17 [#1] PREEMPT
Modules linked in: macb
CPU: 0    Not tainted  (2.6.24-rc5-rt1 #2)
pc : [<c01a9e60>]    lr : [<c01a9e90>]    psr: 60000093
sp : c3c25f10  ip : 0000012c  fp : c3c25f1c
r10: 00000000  r9 : 00000000  r8 : 00000000
r7 : 000000ac  r6 : 00000000  r5 : 0000012c  r4 : 00000000
r3 …
Run Code Online (Sandbox Code Playgroud)

embedded-linux

8
推荐指数
1
解决办法
2万
查看次数

Linux内核驱动程序:NVRAM访问的模型是什么?

我刚刚在我的主板上为恩智浦RTC芯片编写了一个RTC驱动程序,效果很好.这个芯片还有一些电池支持的RAM,我想提供给用户空间应用程序.RTC框架不支持这一点.它只有512个字节,但我在做一个可寻找的CHAR驱动程序或一个完整的BLOCK驱动程序之间徘徊.我之前从未做过块驱动程序,但它似乎需要比简单的CHAR更多的信息.

我也可以与IOCTLS接口,但感觉不尽如人意.什么感觉是让这些字节可供用户使用的最佳方式?

[编辑]我忘了提到RTC芯片悬挂在I2C端口上,它没有映射到内存中,因此不能成为mmaping的好选择.[/编辑]

linux-device-driver linux-kernel embedded-linux

8
推荐指数
1
解决办法
2822
查看次数

如何测试内核的内核恐慌?

我正在嵌入式设备上测试Linux内核,并希望找到Linux内核会发出恐慌的情况/场景.

你能建议一些测试步骤(手动或代码自动化)来创建内核恐慌吗?

linux linux-device-driver linux-kernel embedded-linux

8
推荐指数
2
解决办法
9686
查看次数

ARM9上的valgrind?

我看到valgrind有一个ARM7目标,但我发现有关valgrind是否支持ARM9的相互矛盾的信息.我正在使用的ARM9目标是运行linux.

有没有人专门成功地在ARM9目标上使用valgrind?如果是这样,你可以提供的任何指针都会有所帮助,包括"你是如何构建它的?".

谢谢

-z

valgrind arm embedded-linux arm9

8
推荐指数
1
解决办法
4894
查看次数

添加条目到task_struct并初始化为默认值

我想在进程控制块结构(task_struct)中添加一个条目.让我们说一种标记某个过程的方法.我想将此字段初始化为0,除了"一些特殊进程"之外的所有进程,稍后通过调用sched_setscheduler()我将为"特殊进程"设置此标志.

有人知道如何为成员变量分配默认值task_struct吗?

linux-device-driver linux-kernel embedded-linux

8
推荐指数
1
解决办法
4439
查看次数

Spidev不使用ioctl同时写/读

我希望找到一些帮助,即使这个问题可能是硬件而不是软件相关(我们会看到).我正在开发基于Freescales P1021处理器(ppc,e500v2核心)的定制电路板.外部PCB将连接,可由SPI配置.该外部PCB的规格读取为全双工模式下的2字节命令,并且只有最后一个字节用于在MISO上传输数据.

知道这一点,我目前正在准备一些软件来测试这个设备.所以我从众所周知的spi_test程序开始.

root@p1021rdb:~# ./spi_test -D /dev/spidev32766.3
spi mode: 0
bits per word: 8
max speed: 500000 Hz (500 KHz)

00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00
00 00
root@p1021rdb:~#
Run Code Online (Sandbox Code Playgroud)

PIC1

信号显示608个时钟,似乎上半部分只有数据.我决定用loopback调查和测试它 - 切割MOSI-MISO将数据循环回rx缓冲区.结果:

root@p1021rdb:~# ./spi_test -D /dev/spidev32766.3
spi mode: 0
bits per word: 8
max speed: 500000 Hz (500 …
Run Code Online (Sandbox Code Playgroud)

c powerpc spi linux-device-driver embedded-linux

8
推荐指数
1
解决办法
8318
查看次数

USB设备枚举失败:"设备描述符读取/ 64,错误-32"

我正在使用ST微控制器开发一个ttyACM设备,并且使用相同的代码,我的主机有时可以成功地枚举它(下面),但有时它只是转储下面的消息.错误-32是什么意思?

[未能注册]

usb 1-2.1: new full speed USB device number 62 using ehci_hcd
usb 1-2.1: device descriptor read/64, error -32
usb 1-2.1: device descriptor read/64, error -32
usb 1-2.1: new full speed USB device number 63 using ehci_hcd
usb 1-2.1: device descriptor read/64, error -32
usb 1-2.1: device descriptor read/64, error -32
usb 1-2.1: new full speed USB device number 64 using ehci_hcd
usb 1-2.1: device not accepting address 64, error -32
usb 1-2.1: new full speed USB device number …
Run Code Online (Sandbox Code Playgroud)

linux usb microcontroller linux-kernel embedded-linux

8
推荐指数
1
解决办法
2万
查看次数

有没有办法用我自己的softirq调用linux内核

类似于系统调用的工作方式int 0x80,是否可以在内核中实现自己的ISR,以便在softirq上假设int 0x120或与任何其他softirq程序计数器一起从用户空间跳转到内核空间

正在进入特权模式内核只与有关int 0x80,或与任何软中断实现我可以自动或禁用保护模式并进入我们必须通过编写其相关的标志做手工特权模式进入特权模式?

还有一两件事,如果能够实现这种类型的ISR的,是数据交换的最佳方法是使用寄存器EBX,ECX,EDX,ESI,EDI和EBP或任何其他方式仍然存在?

我已经看过如何在linux内核中定义和触发我自己的新softirq?但没有得到我想要的解决方案.

我会更明确一些,为什么我需要这个
我实现了很少的内核函数,它们直接与硬件外设交谈,我希望它们使用软件中断从用户空间触发.不能使用具有可用驱动程序体系结构的系统调用,因为我需要减少执行时间.

c system-calls linux-kernel embedded-linux softirq

8
推荐指数
1
解决办法
436
查看次数

linuxrc 的用途是什么以及 rootfs 中是否需要它?

问题

我的问题是,linuxrc做什么?我需要它在我的吗rootfssystemd它与使用vs有什么关系吗initd

背景

rootfs我目前正在尝试使用 Yocto 为 ARM 7 处理器构建一个。我对原始 BSP 项目所做的唯一修改是我指定要用作systemd我的初始化管理器(在 参考资料中完成local.conf)。构建rootfs( bitbake core-image-minimal) 并使用Mgftool2我将其加载到板上。当我尝试启动映像时,出现以下错误:

VFS: Mounted root (ext3 filesystem) readonly on device 179:2.
devtmpfs: mounted
Freeing unused kernel memory: 272K (80816000 - 8085a000)
Kernel panic - not syncing: Requested init /linuxrc failed (error -2).
CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W       4.4.15-v4.4.15+g017b90c #1
Hardware name: Freescale i.MX6 Ultralite (Device …
Run Code Online (Sandbox Code Playgroud)

embedded-linux yocto

8
推荐指数
1
解决办法
9032
查看次数

yocto 中的 .bb ( recipe ) 和 .bbclass ( class ) 有什么区别

我刚刚开始了解 Yocto。我没有找到太多关于类 (.bbclass) 文件的信息。我知道 .bb 文件是一个包含构建包指令的配方。我们什么时候必须写菜谱,什么时候写一个类或者两者之间有什么区别

linux embedded-linux yocto

8
推荐指数
1
解决办法
6148
查看次数