Я написал первый простой Linux-модуль для Led-мигания. Если я использую для паузы между Led ON и Led Off командой ssleep (1), то все в порядке, но если я использую udelay (40), тогда весь Linux и приложения, такие как SSH, Webserver и т. Д., Будут заморожены. Не могли бы вы помочь мне, почему это происходит и как это исправить?Linux-модуль ядра, блокирующий весь Linux
#include <linux/init.h>
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/gpio.h>
#include <mach/gpio.h>
MODULE_LICENSE("GPL");
static int led_on_init(void)
{
gpio_direction_output(AT91_PIN_PA24, 0);
int i = 1;
while (i == 1)
{
gpio_set_value(AT91_PIN_PA24, 1);
/*udelay(40);*/
ssleep(1);
gpio_set_value(AT91_PIN_PA24, 0);
ssleep(1);
/*udelay(40);*/
}
}
static void led_on_exit(void)
{
gpio_set_value(AT91_PIN_PA24, 0);
}
module_init(led_on_init);
module_exit(led_on_exit);
спасибо. Мне разрешено вытесняемое ядро. Теперь он работает. –