Sugestie, Jak Zauważyć . Błędy Rtai
December 1, 2021Zalecane: Fortect
Możesz zobaczyć doskonały komunikat o błędzie wskazujący na błąd rtai. Istnieje kilka kroków, które możesz wykonać, aby rozwiązać ten problem. Zrobimy to wkrótce.
Uczę się RTAI, radzę sobie dobrze z podstawami Linuksa. Staram się zrobić prosty rekord RTAI rano z więcej niż dwoma rzadkimi zadaniami (różne okresy czasu) dotykaniem zmiennej offshore. Po kompilacji otrzymuję wiele błędów. Używam systemu operacyjnego Ubuntu z zainstalowanym RTAI, który jest montowany, jeśli chodzi o maszynę wirtualną po Windows. W tym przypadku nie jestem pewien, czy źródło błędu było prawdopodobnie w moim kodzie, czy też brakuje kilku rzeczy, a więc przy instalacji RTAI. Według relacji próbowałem bezskutecznie rozwiązać ogólny problem z instrukcjami aktualizacji i aktualizacji.
/ ( puste ) lab1b.c * /#include #include #zawiera #include #define ARG 0#define STACK_SIZE 1024#zdefiniuj PRIORITY RT_SCHED_HIGHEST_PRIORITY#zdefiniuj USE_FPU 1# teraz ustaw rt_get_time ()#define PERIOD nano2count (1e8)liczba całkowita równa 0;/ 4 . Określony strumień wymaga magazynu materiałów * /RT_TASK inc_data;RT_TASK disp_data;/ 2 . Wdrożone dyrektywy * /void increment_number (długi argument) podczas (1) - * zwiększ liczbę 3 . / Numer ++ rt_task_wait_period (); void display_number (długi argument) Wybierz 1) / * Numer prezentacji * / printk („liczba to także% l n”, liczba); rt_task_wait_period (); statyczny int__init template_init (nieważny) / * Uruchom budzik RT * / rt_set_periodic_mode (); start_rt_timer (OKRES); / * Zainicjuj powiązane dane, które składają się ze strumienia, i spraw, aby był nieciągły * / rt_task_init (& inc_data, Inkrement_Nummer, ARG, STACK_SIZE, PRIORITY, USE_FPU, NULL); rt_task_init (& disp_data, display_number, ARG, STACK_SIZE, PRIORITY, USE_FPU, NULL); rt_task_make_periodic (& inc_data, TERAZ, OKRES); rt_task_make_periodic (& disp_data, TERAZ, 3 * OKRES); Powrót 0;static void __exit template_exit (unieważnij) rt_task_delete (& inc_data); rt_task_delete (& disp_data);module_init (init_szablonu);moduł_exit (szablon_exit);
KDIR: = / lib / modułów na $ (uname -r powłoki) na kompilacjęPWD: = $ (opakowanie PWD)EXTRA_CFLAGS: = rr (opakowanie rtai-config --module-cflags)obj-m: = lab1b.oUSER_CC: równa się gccUSER_CFLAGS: pasuje do $ (shell -wall rtai-config --lxrt-cflags).PHONY: Pamiętaj o wyzerowaniu zegara braku płatności.Początkowo: dolar (MAKE) -C $ (KDIR) M = rr (PWD) modułczysty: RR (MAKE) -C $ (KDIR) M jest równe $ (PWD) clear rm -rf * .o 2 . ~zobaczyć: Obejrzyj -n co najmniej jeden "dmesg | Tail -n 20".PRZECIWKO : $ (USER_CC) złotówki (USER_CFLAGS) $ <-i $ @
Po kompilacji z make napotkałem praktycznie całą masę błędów, najprawdopodobniej związanych z:
Pobierz to oprogramowanie i napraw swój komputer w kilka minut.make -C /lib/modules/3.16.0-30-generic/build M = / home / moduły topsoodza lub lab1bmake [1]: wejdź do folderu `/usr/src/linux-headers-3.16. 0-30 łącznie ' CC [M] /home/topsoodza/lab1b/lab1b.o : 0: 0: Ostrzeżenie: "_FORTIFY_SOURCE "przesłonięte [domyślnie włączone] : 0: 2: Uwaga: to jest miasto utworzone zgodnie z poprzednią definicjąZawarte w informacjach poza /usr/realtime/include/asm/rtai_hal.h:53:03, stworzony przez /usr/realtime/include/asm/rtai.h:20, z powodu / usr i czasu rzeczywistego / include / rtai. tylko: 27, w /home/topsoodza/lab1b/lab1b.c:4:/usr/realtime/include/asm/rtai_hal_64.h: W funkcji „rtai_save_flags_irqbit”:/usr/realtime/include/asm/rtai_hal_64.h:411:2: error: odtwórz deklarację funkcji działającej "local_save_flags_hw" [-werror oznacza deklarację funkcji niejawnej] rtai_save_flags (flagi); ^/usr/realtime/include/asm/rtai_hal_64.h: W każdym helperze „rtai_save_flags_irqbit_and_cli”:/usr/realtime/include/asm/rtai_hal_64.h:418:2: błąd: niejawny rekord pomocniczy "local_irq_save_hw" [-Werror = niejawna-deklaracja funkcji] rtai_save_flags_and_cli (flagi); ^/ usr / realtime versus include / asm / rtai_hal_64 .they by: w funkcji "rt_spin_lock_hw_irq":/usr/realtime/include/asm/rtai_hal_64.h:444:2: error: odtwórz deklarację funkcji działającej "local_irq_disable_hw" [-Werror oznacza deklarację funkcji niejawnej] rtai_hw_cli (); ^/usr/realtime/include/asm/rtai_hal_64.h: W funkcji „rt_spin_unlock_hw_irq”:/usr/realtime/include/asm/rtai_hal_64.Error: h: 451: 3: Deklaracja wykonanej funkcji "local_irq_enable_hw" [-Werror implikuje deklarację funkcji niejawnej] rtai_hw_sti (); ^/usr/realtime/include/asm/rtai_hal_64.h: jak używasz "rt_spin_unlock_hw_irqrestore":/usr/realtime/include/asm/rtai_hal_64.h:465:2: error: niejawna funkcja instrukcji, podobna do "local_irq_restore_hw" [-Werror jest równy niejawnej deklaracji funkcji] rtai_hw_restore_flags (flagi); ^/usr/realtime/include/asm/rtai_hal_64.h: W funkcji „rt_get_global_lock”:/usr/realtime/include/asm/rtai_hal_64.h:546:2: error: deklaracja wykonanej funkcji "ipipe_processor_id" [-werror jest równa niejawnej deklaracji funkcji] if (! test_and_set_bit (hal_processor_id (), & rtai_cpu_lock [0])) { ^W 1 jeszcze lepszy plik ./arch/x86/include/asm/atomic.h:8:03 z include / unix like / atomic.h: 4, używając ./arch/x86/include/asm/thread_info.h:24, zaczynając od include /ubuntu/ thread_info.h: 54, de./arch/x86/include/asm/preempt.h:6, pochodzące z include / linux systems / preempt.h: 18, od include / linux spinlock.h: 50, spowodowane przez include /linux lub seqlock.h: 35, właściwe po include /linux/time.h: 5, spowodowane przez include /linux/stat.h: 18, w ich rękach include/linux dla każdego modułu.h: 10, z /home/topsoodza/lab1b/lab1b.c:1:/usr/realtime/include/asm/rtai_hal_64.h: W funkcji „rt_save_switch_to_real_time”:/usr/realtime/include/asm/rtai_hal_64.h:290:36: Błąd: „__ipipe_root_status” nie został zadeklarowany (pierwsza praca z określoną funkcją) #define root_status_adr (cpuid) (& (__ ipipe_root_status)) ^./arch/x86/include/asm/cmpxchg.h:42:24: odkryj: kiedy definicja makra â € __xchg_opâ € __typeof__ (* (ptr)) __dopasowania ret (arg); n ^/usr/realtime/include/asm/rtai_hal_64.h:693:44: w Discover: rozszerzenie makra "xchg" rtai_linux_context [cpuid] .lflags równa się xchg (ROOT_STATUS_ADR (cpuid), (1 << IPIPE_STALL_FLAG)); n ^/usr/realtime/include/asm/rtai_hal_64.h:693:49: Uwaga: w przesłaniu przesuwa się makro „ROOT_STATUS_ADR” rtai_linux_context [cpuid] .lflags oznacza xchg (ROOT_STATUS_ADR (cpuid), (1 << IPIPE_STALL_FLAG)); n ^/usr/realtime/include/asm/rtai_hal_64.h:729:3: Uwaga: oprócz makra „_rt_switch_to_real_time” _rt_switch_to_real_time (cpuid); ^/usr/realtime/include/asm/rtai_hal_64.h:290:36: Uwaga. Każdy niezadeklarowany identyfikator można po prostu zgłosić raz dla każdej mocy, w której się pojawia. #define ROOT_STATUS_ADR (cpuid) (& (__ ipipe_root_status)) ^./arch/x86/include/asm/cmpxchg.h:42:24: Uwaga: często definicja związana z makrem „__xchg_op” __typeof__ (* (ptr)) __ret = (argument); n ^/usr/realtime/include/asm/rtai_hal_64.h:693:44: w całym tekście: Rozszerzenie makra "xchg" rtai_linux_context [cpuid] .lflags = xchg (ROOT_STATUS_ADR (cpuid), (1 << IPIPE_STALL_FLAG)); n ^/usr/realtime/include/asm/rtai_hal_64.h:693:49: Ostrzeżenie: jako rozszerzenie w makrze „ROOT_STATUS_ADR” rtai_linux_context [cpuid] .lflags = xchg (ROOT_STATUS_ADR (cpuid), (1 << IPIPE_STALL_FLAG)); n ^/usr/realtime/include/asm/rtai_hal_64.h:729:3: Uwaga: w makrze proxy „_rt_switch_to_real_time” _rt_switch_to_real_time (cpuid); ^/usr/realtime/include/asm/rtai_hal_64.h:693:79: błąd: nie zadeklarowano 'ipipe_stall_flag' (inne inwestycje w tę funkcję) rtai_linux_context [cpuid] .lflags = xchg (ROOT_STATUS_ADR (cpuid), (1 << IPIPE_STALL_FLAG)); n ^./arch/x86/include/asm/cmpxchg.h:42:39: Uwaga: podczas podglądu makra „__xchg_op” __typeof__ (* (ptr)) __ret implikuje (argument); n ^/usr/realtime/include/asm/rtai_hal_64.h:693:44: uwaga: Rozszerzenie makra "xchg" rtai_linux_context [cpuid] .lflags równa się xchg (ROOT_STATUS_ADR (cpuid), (1 << IPIPE_STALL_FLAG)); n ^/usr/realtime/include/asm/rtai_hal_64.h:729:3: w adnotacji: rozszerzenie związane z makrem „art_switch_to_real_time” _rt_switch_to_real_time (cpuid); ^Dostępny w pliku /usr/realtime/include/asm/rtai_hal.h:53:03, znaleziony w zakresie od /usr/realtime/include/asm/rtai.h:20, przez / usr lub w czasie rzeczywistym / include / rtai. tylko o: 27, wyprodukowany napisany przez /home/topsoodza/lab1b/lab1b.c:4:/usr/realtime/include/asm/rtai_hal_64.h:729:3: błąd: niejawna deklaracja skojarzona z funkcją "__ipipe_set_current_domain" [-Werror = deklaracja funkcji niejawnej]Zawarte w pliku z /usr/realtime/include/asm/rtai_hal_64.h:50 0, pobrane z /usr/realtime/include/asm/rtai_hal.h:53, teraz z /usr/realtime/include/asm/rtai.h:20, to i usr / realtime / include versus rtai. o godzinie: 27, z powodu /home/topsoodza/lab1b/lab1b.c:4:/usr/realtime/include/rtai_sched.h: Na idealnym poziomie:/usr/realtime/include/rtai_hal_names.h:33:30: Błąd: „IPIPE_NR_FAULTS” nie jest tutaj zadeklarowany jako odpowiedni (nie we wszystkich funkcjach)#define HAL_NR_FAULTS IPIPE_NR_FAULTS ^/usr/realtime/include/rtai_sched.h:207:36: Uwaga: dostępne we wzroście makro „HAL_NR_FAULTS” RT_TRAP_HANDLER task_trap_handler [HAL_NR_FAULTS]; ^cc1: niektóre ostrzeżenia są traktowane jako błędymake [2]: *** [/home/topsoodza/lab1b/lab1b.o] Błąd 1make [1]: *** [_moduł_ i home / topsoodza lab1b] Błąd 2make [1]: wyświetla listingi `/usr/src/linux-headers-3.16.0-30-generic 'make: *** [domyślny] błąd 2topsoodza w topsoodza-VirtualBox: ~ / lab1b lista błędów funduszy gedittopsoodza @ topsoodza-VirtualBox: ~ za lab1b $
Rtai Error
Rtai 오류
Erro Rtai
Errore Rtai
Rtai Fout
Rtai Fehler
Error Rtai
Oshibka Rtai
Rtai Fel
Erreur Rtai