【20220815】新板子第一次调试的错误大多是硬件的疏忽

博客指出STM32硬件设计存在问题,如看门狗未按要求接VDD、拨码开关输入未上拉、连接器无GND端口等。这些问题源于硬件工程师绘制原理图时判断失误,未与项目负责人确认接线方法。强调团队合作中及时沟通的重要性。

1、看门狗没有按照外设芯片的要求接VDD,而是被硬件工程师NC处理了

2、拨码开关输入没有进行上拉处理

3、连接器P3没有GND端口

Layout没问题,主要是硬件工程师绘制原理图的时候的一些判断上的问题,当他不知道项目需要什么接线方法的时候,没有向项目负责人确认,而是用了默认NC、默认没有上下拉、默认GND不需要引出。

所以,及时沟通在团队合作中很重要,不然你画的板子地不断修修补补。

调试 Vitesse 交换机板子的 bring-up 过程中,需要从硬件初始化、固件加载、驱动程序绑定以及系统日志分析等多个方面入手。以下是一些关键步骤和建议: ### 硬件检查 在进行软件调试之前,确保硬件部分没有问题。使用万用表或示波器检查电源电压是否稳定,时钟信号是否正常,以及是否存在短路或断路现象。对于交换机而言,确保所有 PHY 芯片正确连且能够正常通信是非常重要的 [^1]。 ### 固件加载 确认用于初始化交换机的固件文件是否正确无误。这包括检查固件版本是否与硬件兼容,以及固件是否被正确烧录到存储介质中。如果固件加载失败,应检查加载过程中的错误日志以定位问题所在 [^1]。 ### 驱动程序绑定 对于支持多个控制台驱动程序的系统,如使用 framebuffer 控制台驱动程序的情况,确保选择了正确的驱动程序进行绑定。这一步骤对于确保能够通过控制台访问交换机至关重要 [^1]。可以通过内核命令行参数或者设备树配置来指定使用的控制台驱动程序。 ### 系统日志分析 利用串口控制台或其他可用的日志输出方式,收集系统启动过程中的日志信息。这些信息可以帮助识别启动过程中出现的问题,比如驱动加载失败、硬件检测错误等。特别注意任何关于网络口、PHY 芯片或交换芯片错误消息 。 ### 示例代码 如果你需要编写或修改驱动程序来支持硬件特性,下面是一个简单的 Linux 内核模块示例,用于演示如何注册一个简单的字符设备驱动程序。虽然这个例子并不直适用于 Vitesse 交换机的调试,但它展示了如何创建一个基本的驱动程序框架: ```c #include <linux/module.h> #include <linux/fs.h> #include <linux/cdev.h> #include <linux/device.h> static dev_t dev_num; static struct cdev *my_cdev; static struct class *my_class; static int my_open(struct inode *inode, struct file *file) { printk(KERN_INFO "Device opened\n"); return 0; } static int my_release(struct inode *inode, struct file *file) { printk(KERN_INFO "Device closed\n"); return 0; } static ssize_t my_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) { printk(KERN_INFO "Read operation\n"); return 0; } static ssize_t my_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { printk(KERN_INFO "Write operation\n"); return count; } static struct file_operations fops = { .owner = THIS_MODULE, .open = my_open, .release = my_release, .read = my_read, .write = my_write, }; static int __init my_module_init(void) { alloc_chrdev_region(&dev_num, 0, 1, "my_device"); my_cdev = cdev_alloc(); cdev_init(my_cdev, &fops); cdev_add(my_cdev, dev_num, 1); my_class = class_create(THIS_MODULE, "my_class"); device_create(my_class, NULL, dev_num, NULL, "my_device"); printk(KERN_INFO "Module loaded\n"); return 0; } static void __exit my_module_exit(void) { cdev_del(my_cdev); unregister_chrdev_region(dev_num, 1); device_destroy(my_class, dev_num); class_destroy(my_class); printk(KERN_INFO "Module unloaded\n"); } module_init(my_module_init); module_exit(my_module_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Your Name"); MODULE_DESCRIPTION("A Simple Character Device Driver"); ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值