i8253 count too high!resetting!解决方法

本文提供了一种解决Linux系统中出现的“i8253counttoohighresetting”提示的方法。该问题常见于RedHat9系统,并通过禁用PCMCIA服务来解决。
一个linux系统常出现的问题的解决方法

遇到“i8253 count too high resetting”提示的大多都是安装RedHat9之后发生的,具体显现为连续提示:“i8253 count too high resetting”,如果按下回车会暂停一下,然后过一会又开始提示。看到很多网友说是PCMCIA驱动的问题,没搞明白到底是什么问题,不过我安装下面的方法操作,解决了提示“i8253 count too high resetting”的问题。

1)启动后一直按"ESC",出现引导画面后按“e”键,进入Grub编辑模式;
2)用方向键选择 “kernel /vmlinuz-2.4.20-8 ro root=LABEL=/”,然后再次按“e”键,就可以编辑这一行;
3)开始编辑 “kernel /vmlinuz-2.4.20-8 ro root=LABEL=/”,在“/”后先敲一个空格,再输入“single”,注意:不必输入双引号。按回车退出当前编辑模式;
4)回到Grub编辑模式的画面,按“b”启动系统,进入单人模式;
5)输入“chkconfig --del pcmcia”,回车;
6)输入“service pcmcia stop”,回车;
7)输入“reboot”,回车,重启RedHat;
8)问题解决。
// 系统校准流程 void AD7190_SystemCalibrate(void) { if (!ad7190_state.is_initialized) AD7190_Init(); uint8_t rx_char; uint32_t start_time = HAL_GetTick(); // 获取开始时间 printf("===== System Calibration =====\r\n"); // 1. 零点校准 printf("Ensure platform is empty, then press 'z' for zero calibration...\r\n"); while(1) { if (HAL_UART_Receive(&huart1, &rx_char, 1, 100) == HAL_OK) { if(rx_char == 'z' || rx_char == 'Z') break; } // 添加超时检测 if (HAL_GetTick() - start_time > CALIBRATION_TIMEOUT) { printf("Calibration timed out\n"); return; } } // 读取32个样本,丢弃异常值 uint32_t samples[32]; int valid_count = 0; for(int i = 0; i < 32; i++) { uint32_t data = AD7190_ReadData(); // 检查数据有效性(排除异常值) if (data > 0 && data < 0xFFFFFF) { samples[valid_count++] = data; } HAL_Delay(10); } if (valid_count < 16) { printf("ERROR: Not enough valid samples for zero calibration (%d/32)\n", valid_count); return; } // 计算中值代替平均值(更抗干扰) qsort(samples, valid_count, sizeof(uint32_t), compare_uint32); ad7190_state.calib.calibration_offset = samples[valid_count / 2]; // 2. 量程校准 printf("Place 1000.0g weight, then press 'f' for full scale calibration...\r\n"); while(1) { if (HAL_UART_Receive(&huart1, &rx_char, 1, 100) == HAL_OK) { if(rx_char == 'f' || rx_char == 'F') break; } // 添加超时检测 if (HAL_GetTick() - start_time > CALIBRATION_TIMEOUT) { printf("Calibration timed out\n"); return; } } // 读取32个样本,丢弃异常值 // 读取32个样本,丢弃异常值 uint32_t F_samples[32]; int F_valid_count = 0; for(int i = 0; i < 32; i++) { uint32_t data = AD7190_ReadData(); // 检查数据有效性(排除异常值) if (data > 0 && data < 0xFFFFFF) { F_samples[F_valid_count++] = data; } HAL_Delay(10); } if (valid_count < 16) { printf("ERROR: Not enough valid samples for full scale calibration (%d/32)\n", valid_count); return; } // 计算中值代替平均值 qsort(F_samples, F_valid_count, sizeof(uint32_t), compare_uint32); uint32_t full_scale = F_samples[valid_count / 2]; // 计算校准因子(增加安全范围检查) int32_t diff = (int32_t)full_scale - (int32_t)ad7190_state.calib.calibration_offset; if (diff <= 1000) { // 1000是经验值,根据实际传感器调整 printf("ERROR: Invalid calibration difference (%ld). Too small!\n", diff); return; } if (diff > 10000000) { // 防止异常大值 printf("ERROR: Invalid calibration difference (%ld). Too large!\n", diff); return; } ad7190_state.calib.calibration_factor = 1000.0f / (float)diff; // 重置去皮值和滤波器 ad7190_state.calib.tare_value = 0.0f; KalmanFilter_Init(&ad7190_state.kf, 0.001f, 0.01f, 1.0f, 0.0f); // 保存到EEPROM // AD7190_SaveCalibrationToEEPROM(); printf("System calibration completed! Factor: %f\n", ad7190_state.calib.calibration_factor); } REFIN2 configured successfully (GPOCON: 0x00) Internal zero calibration completed AD7190 initialized successfully ===== System Calibration ===== Ensure platform is empty, then press 'z' for zero calibration... Place 1000.0g weight, then press 'f' for full scale calibration... System calibration completed! Factor: 0.004975 WARNING: Only 0/32 valid samples Weight: 0.0g WARNING: Only 0/32 valid samples Weight: 0.0g WARNING: Only 0/32 valid samples Weight: -69.0g WARNING: Only 0/32 valid samples什么原因?
08-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值