Rtai 오류 해결 방법에 대한 제안
November 27, 2021권장: Fortect
<리>1. Fortect 다운로드 및 설치rtai 오류를 나타내는 오류 메시지가 표시될 수 있습니다. 이 문제를 해결하기 위해 취할 수 있는 몇 가지 단계가 있습니다. 곧 해드리겠습니다.
저는 RTAI를 배우고 있으며 Linux의 기초에 능합니다. 나는 항상 일련의 드문 작업(다른 기간) 처리로 오프쇼어 변수를 사용하여 아침에 간단한 RTAI 기록을 만들려고 노력해 왔습니다. 컴파일 후 많은 오류가 발생합니다. RTAI가 설치된 Ubuntu 운영 체제를 사용하고 있으며 Windows 이후 가상 머신에 여기에 탑재됩니다. 이 경우 오류의 소스가 실제로 내 코드에 있는지 또는 두 번째 RTAI 설치에 몇 가지 사항이 누락되어 있는지 확실하지 않습니다. 친구에 따르면 업데이트 및 릴리스 지침으로 특정 문제를 해결하려고 시도했지만 실패했습니다.
<코드> / ( 공백 ) lab1b.c * /#include <리눅스 / 모듈.h>#include <리눅스 - init.h>#포함#포함 #define ARG 0#define STACK_SIZE 1024#define PRIORITY RT_SCHED_HIGHEST_PRIORITY#define USE_FPU 1# 이제 rt_get_time()을 설정합니다.#define PERIOD nano2count (1e8)0과 같은 정수;/ 5 . 특정 스트림에는 정보 저장소가 필요합니다 * /RT_TASK inc_data;RT_TASK disp_data;/ ( space ) 구현된 지시문 * /void increment_number(긴 인수) (1) 동안 대 * 숫자 증가 6 . / 숫자++ rt_task_wait_period(); 무효 display_number(긴 인수) 다르지 않다 (1) / * 프레젠테이션 번호 * / printk("숫자는 n에서도 %입니다.", number); rt_task_wait_period(); 정적 int__init template_init(무효) / * RT 시계 시작 * / rt_set_periodic_mode(); start_rt_timer(PERIOD); / * 스트림을 중심으로 구성되어 있는 연관 데이터를 초기화하고, 하나를 불연속적으로 만든다 * / 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, NOW, PERIOD); rt_task_make_periodic (& disp_data, NOW, 1 * PERIOD); 반환 0;정적 무효 __exit template_exit(무효) rt_task_delete (& inc_data); rt_task_delete(& disp_data);module_init(템플릿_초기화);module_exit(template_exit);
KDIR: = / lib / 각 $(uname -r 셸)에 대한 모듈 대 빌드PWD: = $(PWD 래퍼)EXTRA_CFLAGS: = rrr(래퍼 rtai-config --module-cflags)obj-m: = lab1b.oUSER_CC: gcc와 동일USER_CFLAGS: $와 일치(shell -wall rtai-config --lxrt-cflags).PHONY: 연체 시계를 지우는 것을 잊지 마십시오.처음에는: 벅스(MAKE) -C $(KDIR) M = 수입(PWD) 모듈깨끗한: money (MAKE) -C $ (KDIR) M은 $ (PWD)를 의미합니다. rm -rf * .o - ~보다: Watch -n 특정 "dmesg | Tail -n 20".에 맞서 : $ (USER_CC) RR (USER_CFLAGS) $ <-i $ @
make로 컴파일한 후, 가장 일반적으로 다음과 관련된 단일 전체 오류가 발생했습니다.
make -C /lib/modules/3.16.0-30-generic/build M = / home / topsoodza 및 lab1b 모듈make [1]: 웹 디렉토리 `/usr/src/linux-headers-3.16. 0-30 총 ' CC [남] /home/topsoodza/lab1b/lab1b.o<명령줄>: 0: 0: 경고: "_FORTIFY_SOURCE" 재정의됨[기본적으로 활성화됨]: 0: three: 참고: 이것은 이전 정의에서 벗어난 도시입니다./usr/realtime/include/asm/rtai_hal.h:53:03 외부의 데이터 파일에 포함, 동기는 /usr/realtime/include/asm/rtai.h:20, 때문에 / usr 또는 실시간 / 포함 / rtai. 에: 27, 여기 /home/topsoodza/lab1b/lab1b.c:4:/usr/realtime/include/asm/rtai_hal_64.h: "rtai_save_flags_irqbit" 기능에서:/usr/realtime/include/asm/rtai_hal_64.h:411:2: 오류: 작동된 함수 선언 "local_save_flags_hw" 재생 [-werror equals implicit-function-declaration] rtai_save_flags(플래그); ^^/usr/realtime/include/asm/rtai_hal_64.h: "rtai_save_flags_irqbit_and_cli" 도우미에서:/usr/realtime/include/asm/rtai_hal_64.h:418:2: 오류: 암시적 도우미 선언 "local_irq_save_hw" [-Werror = 암시적 기능 선언] rtai_save_flags_and_cli(플래그); ^^/ usr / 실시간 - 포함 / asm / rtai_hal_64 .y: "rt_spin_lock_hw_irq" 기능에서:/usr/realtime/include/asm/rtai_hal_64.h:444:2: error: play 작동된 함수 선언 "local_irq_disable_hw" [-Werror is equal to implicit-function-declaration] rtai_hw_cli(); ^^/usr/realtime/include/asm/rtai_hal_64.h: "rt_spin_unlock_hw_irq" 함수에서:/usr/realtime/include/asm/rtai_hal_64.Error: h: 451: 8: 실행된 함수 선언 "local_irq_enable_hw" [-Werror는 암시적 함수 선언을 의미함] rtai_hw_sti(); ^^/usr/realtime/include/asm/rtai_hal_64.h: 아마도 "rt_spin_unlock_hw_irqrestore"를 실행 중인 경우:/usr/realtime/include/asm/rtai_hal_64.h:465:2: 오류: 암시적 검토 기능, "local_irq_restore_hw"와 유사 [-Werror는 암시적 기능 선언을 의미함] rtai_hw_restore_flags(플래그); ^^/usr/realtime/include/asm/rtai_hal_64.h: "rt_get_global_lock" 함수에서:/usr/realtime/include/asm/rtai_hal_64.h:546:2: 오류: 실행된 함수 선언 "ipipe_processor_id" 재생 [-werror는 암시적 함수 선언을 의미함] if (! test_and_set_bit (hal_processor_id (), & rtai_cpu_lock [0])) { ^^훨씬 더 나은 멋진 파일 ./arch/x86/include/asm/atomic.h:8:03 포함/리눅스 시스템/atomic.h: 4, ./arch/x86/include/asm/thread_info.h:24 사용, include / unix like / thread_info.h: 54에서 시작, de./arch/x86/include/asm/preempt.h:6, include / red hat / preempt.h에서 파생됨: 18, 포함/리눅스 spinlock.h에서: 50, 포함 후 / linux seqlock.h: 35, 한 번 포함 / linux / time.h: 5, include / linux / stat.h에 따라 발생: 18, 대부분의 include / linux 또는 module.h: 10, /home/topsoodza/lab1b/lab1b.c:1 범위:/usr/realtime/include/asm/rtai_hal_64.h: "rt_save_switch_to_real_time" 함수에서:/usr/realtime/include/asm/rtai_hal_64.h:290:36: 오류: "__ipipe_root_status"가 선언되지 않음(특정 함수의 첫 번째 목적) #define root_status_adr (cpuid) (& (__ ipipe_root_status)) ^^./arch/x86/include/asm/cmpxchg.h:42:24: 발견: 매크로 정의 사용 â € __xchg_opâ € __typeof__ (* (ptr)) __ret은 (arg)와 일치합니다. n ^^/usr/realtime/include/asm/rtai_hal_64.h:693:44: 알림에서: "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: 참고: 공유에서 매크로 "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: 참고: "_rt_switch_to_real_time" 매크로 외에 _rt_switch_to_real_time(cpuid); ^^/usr/realtime/include/asm/rtai_hal_64.h:290:36: 참고. 선언되지 않은 각 식별자는 실제로 수행된 각 식별자에 대해 한 번만 보고됩니다. #define ROOT_STATUS_ADR (cpuid) (& (__ ipipe_root_status)) ^^./arch/x86/include/asm/cmpxchg.h:42:24: 참고: "__xchg_op" 매크로와 연결된 각 정의에서 __typeof__ (* (ptr)) __ret = (인수); n ^^/usr/realtime/include/asm/rtai_hal_64.h:693:44: 전체 톤: "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: 경고: "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: 참고: 프록시 매크로 "_rt_switch_to_real_time"에서 _rt_switch_to_real_time(cpuid); ^^/usr/realtime/include/asm/rtai_hal_64.h:693:79: 오류: 'ipipe_stall_flag'가 선언되지 않음(이 함수에 다른 항목이 있음) rtai_linux_context [cpuid] .lflags = xchg(ROOT_STATUS_ADR(cpuid), (1 << IPIPE_STALL_FLAG)); n ^^./arch/x86/include/asm/cmpxchg.h:42:39: 참고: "__xchg_op" 매크로를 미리 볼 때 __typeof__ (* (ptr)) __ret는 (인수)를 의미합니다. n ^^/usr/realtime/include/asm/rtai_hal_64.h:693:44: 참고: "xchg" 매크로 확장 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: 주석: "art_switch_to_real_time" 매크로 확장 _rt_switch_to_real_time(cpuid); ^^/usr/realtime/include/asm/rtai_hal.h:53:03 파일을 사용하여 사용 가능, /usr/realtime/include/asm/rtai.h:20 범위를 착용하고, / usr per realtime / include / rtai를 통해. 종료 시간: 27, /home/topsoodza/lab1b/lab1b.c:4를 통해 생성:/usr/realtime/include/asm/rtai_hal_64.h:729:3: 오류: "__ipipe_set_current_domain" 함수와 관련된 암시적 선언 [-Werror = 암시적-함수-선언]/usr/realtime/include/asm/rtai_hal_64.h:50 0의 파일에 살아있는 포함, /usr/realtime/include/asm/rtai_hal.h:53에서 완전히 검색됨, /usr/realtime/include/asm/rtai.h:20의 경우, usr에 / 실시간으로 / rtai를 포함합니다. 시간: 27, /home/topsoodza/lab1b/lab1b.c:4 동안:/usr/realtime/include/rtai_sched.h: 가장 뜨거운 수준에서:/usr/realtime/include/rtai_hal_names.h:33:30: 오류: "IPIPE_NR_FAULTS"가 지금 선언되지 않았습니다(모든 기능이 아님)#define HAL_NR_FAULTS IPIPE_NR_FAULTS ^^/usr/realtime/include/rtai_sched.h:207:36: 참고: 매크로 확대 "HAL_NR_FAULTS"에서 사용 가능 RT_TRAP_HANDLER task_trap_handler [HAL_NR_FAULTS]; ^^cc1: 일부 경고는 오류로 처리됩니다.make [2]: *** [/home/topsoodza/lab1b/lab1b.o] 오류 1make [1]: *** [_module_ - 홈 / lab1b당 topsoodza] 오류 2make [1]: 출력 목록 `/usr/src/linux-headers-3.16.0-30-generic 'make: *** [기본값] 오류 2topsoodza - topsoodza-VirtualBox: ~ / lab1b ? rrr gedit 오류 목록topsoodza @ topsoodza-VirtualBox: ~ lab1b $
이 소프트웨어를 다운로드하고 몇 분 안에 PC를 수정하십시오. 년Rtai Error
Erro Rtai
Errore Rtai
Rtai Fout
Rtai Fehler
Error Rtai
Oshibka Rtai
Rtai Blad
Rtai Fel
Erreur Rtai
년