赞
踩
先给出官方链接地址
本质上说Linux内核开发和Linux驱动开发是不一样的,或者说驱动开发是内核开发的一部分,因为驱动属于内核。目前国内驱动开发和内核开发一般是一样的。
Linux设备驱动属于内核的一部分,Linux内核的一个模块可以以两种方式被编译和加载:
(1)直接编译进Linux内核,随同Linux启动时加载。
(2)编译成一个可加载和删除的模块。
/home/nvidia/kernel/kernel-5.10
- TKOUT=/usr/src/linux-headers-$(uname -r)-ubuntu18.04_aarch64
- nvidia@nvidia-desktop:~$ $TKOUT
- -bash: /usr/src/linux-headers-5.10.104-tegra-ubuntu18.04_aarch64: No such file or directory
- nvidia@nvidia-desktop:~$ cat TKOUT=/usr/src/linux-headers-$(uname -r)-ubuntu18.04_aarch64
- cat: 'TKOUT=/usr/src/linux-headers-5.10.104-tegra-ubuntu18.04_aarch64': No such file or directory
- nvidia@nvidia-desktop:~$ cat /usr/src/linux-headers-$(uname -r)-ubuntu18.04_aarch64
- cat: /usr/src/linux-headers-5.10.104-tegra-ubuntu18.04_aarch64: No such file or directory
- nvidia@nvidia-desktop:~$ cat /usr/src/linux-headers-$(uname -r)
- cat: /usr/src/linux-headers-5.10.104-tegra: No such file or directory
- nvidia@nvidia-desktop:~$ cat /usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/
- kernel-5.10/ nvgpu/ nvidia/ nvlink/
- nvidia@nvidia-desktop:~$ cat /usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/
- kernel-5.10/ nvgpu/ nvidia/ nvlink/
- nvidia@nvidia-desktop:~$ cat TKOUT=/usr/src/linux-headers-$(uname -r)-ubuntu20.04_aarch64
- cat: 'TKOUT=/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64': No such file or directory
- nvidia@nvidia-desktop:~$ TKOUT=/usr/src/linux-headers-$(uname -r)-ubuntu20.04_aarch64
- nvidia@nvidia-desktop:~$ $TKOUT
- -bash: /usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64: Is a directory
- nvidia@nvidia-desktop:~$ sudo mkdir -p $TKOUT
- [sudo] password for nvidia:
- nvidia@nvidia-desktop:~$ $TKOUT
- -bash: /usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64: Is a directory
- nvidia@nvidia-desktop:~$ cd kernel/
- kernel-5.10/ nvethernetrm/ nvgpu/ nvidia/
- nvidia@nvidia-desktop:~$ cd kernel/
- kernel-5.10/ nvethernetrm/ nvgpu/ nvidia/
- nvidia@nvidia-desktop:~$ cd kernel/
- kernel-5.10/ nvethernetrm/ nvgpu/ nvidia/
- nvidia@nvidia-desktop:~$ cd kernel/kernel-5.10/
- nvidia@nvidia-desktop:~/kernel/kernel-5.10$ ls
- android-patches block COPYING crypto drivers include ipc Kconfig kernel-int-overlays.txt lib MAINTAINERS mm NVIDIA-REVIEWERS rt-patches scripts sound usr
- arch certs CREDITS Documentation fs init Kbuild kernel kernel-overlays.txt LICENSES Makefile net README samples security tools virt
- nvidia@nvidia-desktop:~/kernel/kernel-5.10$ ls
- android-patches block COPYING crypto drivers include ipc Kconfig kernel-int-overlays.txt lib MAINTAINERS mm NVIDIA-REVIEWERS rt-patches scripts sound usr
- arch certs CREDITS Documentation fs init Kbuild kernel kernel-overlays.txt LICENSES Makefile net README samples security tools virt
- nvidia@nvidia-desktop:~/kernel/kernel-5.10$ sudo make ARCH=arm64 O=$TKOUT tegra_defconfig
- make[1]: Entering directory '/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64'
- GEN Makefile
- HOSTCC scripts/basic/fixdep
- HOSTCC scripts/kconfig/conf.o
- HOSTCC scripts/kconfig/confdata.o
- HOSTCC scripts/kconfig/expr.o
- LEX scripts/kconfig/lexer.lex.c
- YACC scripts/kconfig/parser.tab.[ch]
- HOSTCC scripts/kconfig/lexer.lex.o
- HOSTCC scripts/kconfig/parser.tab.o
- HOSTCC scripts/kconfig/preprocess.o
- HOSTCC scripts/kconfig/symbol.o
- HOSTCC scripts/kconfig/util.o
- HOSTLD scripts/kconfig/conf
- #
- # configuration written to .config
- #
- make[1]: Leaving directory '/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64'
- nvidia@nvidia-desktop:~/kernel/kernel-5.10$ sudo make ARCH=arm64 O=$TKOUT -j4 modules_prepare
- make[1]: Entering directory '/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64'
- GEN Makefile
- WRAP arch/arm64/include/generated/uapi/asm/kvm_para.h
- WRAP arch/arm64/include/generated/uapi/asm/errno.h
- WRAP arch/arm64/include/generated/uapi/asm/ioctl.h
- WRAP arch/arm64/include/generated/uapi/asm/ioctls.h
- WRAP arch/arm64/include/generated/uapi/asm/ipcbuf.h
- WRAP arch/arm64/include/generated/uapi/asm/msgbuf.h
- WRAP arch/arm64/include/generated/uapi/asm/poll.h
- WRAP arch/arm64/include/generated/uapi/asm/resource.h
- WRAP arch/arm64/include/generated/uapi/asm/sembuf.h
- WRAP arch/arm64/include/generated/uapi/asm/shmbuf.h
- WRAP arch/arm64/include/generated/uapi/asm/siginfo.h
- WRAP arch/arm64/include/generated/uapi/asm/socket.h
- WRAP arch/arm64/include/generated/uapi/asm/sockios.h
- WRAP arch/arm64/include/generated/uapi/asm/stat.h
- WRAP arch/arm64/include/generated/uapi/asm/swab.h
- WRAP arch/arm64/include/generated/uapi/asm/termbits.h
- WRAP arch/arm64/include/generated/uapi/asm/termios.h
- WRAP arch/arm64/include/generated/uapi/asm/types.h
- UPD include/generated/uapi/linux/version.h
- WRAP arch/arm64/include/generated/asm/early_ioremap.h
- WRAP arch/arm64/include/generated/asm/mcs_spinlock.h
- WRAP arch/arm64/include/generated/asm/qrwlock.h
- WRAP arch/arm64/include/generated/asm/qspinlock.h
- WRAP arch/arm64/include/generated/asm/set_memory.h
- WRAP arch/arm64/include/generated/asm/user.h
- WRAP arch/arm64/include/generated/asm/bugs.h
- WRAP arch/arm64/include/generated/asm/delay.h
- WRAP arch/arm64/include/generated/asm/div64.h
- WRAP arch/arm64/include/generated/asm/dma-mapping.h
- WRAP arch/arm64/include/generated/asm/dma.h
- WRAP arch/arm64/include/generated/asm/emergency-restart.h
- HOSTCC scripts/dtc/dtc.o
- WRAP arch/arm64/include/generated/asm/hw_irq.h
- HOSTCC scripts/dtc/flattree.o
- WRAP arch/arm64/include/generated/asm/irq_regs.h
- WRAP arch/arm64/include/generated/asm/kdebug.h
- WRAP arch/arm64/include/generated/asm/kmap_types.h
- WRAP arch/arm64/include/generated/asm/local.h
- WRAP arch/arm64/include/generated/asm/local64.h
- WRAP arch/arm64/include/generated/asm/mm-arch-hooks.h
- WRAP arch/arm64/include/generated/asm/mmiowb.h
- WRAP arch/arm64/include/generated/asm/msi.h
- WRAP arch/arm64/include/generated/asm/rwonce.h
- WRAP arch/arm64/include/generated/asm/serial.h
- WRAP arch/arm64/include/generated/asm/switch_to.h
- WRAP arch/arm64/include/generated/asm/unaligned.h
- WRAP arch/arm64/include/generated/asm/vga.h
- UPD include/config/kernel.release
- HOSTCC scripts/dtc/fstree.o
- HOSTCC scripts/dtc/data.o
- UPD include/generated/utsrelease.h
- HOSTCC scripts/dtc/livetree.o
- HOSTCC scripts/dtc/treesource.o
- HOSTCC scripts/dtc/srcpos.o
- HOSTCC scripts/dtc/checks.o
- HOSTCC scripts/dtc/util.o
- LEX scripts/dtc/dtc-lexer.lex.c
- YACC scripts/dtc/dtc-parser.tab.[ch]
- HOSTCC scripts/dtc/dtc-lexer.lex.o
- HOSTCC scripts/dtc/dtc-parser.tab.o
- HOSTLD scripts/dtc/dtc
- HOSTCC scripts/kallsyms
- HOSTCC scripts/sorttable
- HOSTCC scripts/genksyms/genksyms.o
- HOSTCC scripts/selinux/genheaders/genheaders
- HOSTCC scripts/selinux/mdp/mdp
- YACC scripts/genksyms/parse.tab.[ch]
- LEX scripts/genksyms/lex.lex.c
- HOSTCC scripts/asn1_compiler
- HOSTCC scripts/sign-file
- HOSTCC scripts/extract-cert
- HOSTCC scripts/genksyms/parse.tab.o
- HOSTCC scripts/genksyms/lex.lex.o
- HOSTLD scripts/genksyms/genksyms
- CC scripts/mod/empty.o
- HOSTCC scripts/mod/mk_elfconfig
- CC scripts/mod/devicetable-offsets.s
- UPD scripts/mod/devicetable-offsets.h
- MKELF scripts/mod/elfconfig.h
- HOSTCC scripts/mod/modpost.o
- HOSTCC scripts/mod/file2alias.o
- HOSTCC scripts/mod/sumversion.o
- HOSTLD scripts/mod/modpost
- CC kernel/bounds.s
- CALL /home/nvidia/kernel/kernel-5.10/scripts/atomic/check-atomics.sh
- UPD include/generated/timeconst.h
- UPD include/generated/bounds.h
- CC arch/arm64/kernel/asm-offsets.s
- UPD include/generated/asm-offsets.h
- CALL /home/nvidia/kernel/kernel-5.10/scripts/checksyscalls.sh
- LDS arch/arm64/kernel/vdso/vdso.lds
- CC arch/arm64/kernel/vdso/vgettimeofday.o
- AS arch/arm64/kernel/vdso/note.o
- AS arch/arm64/kernel/vdso/sigreturn.o
- LD arch/arm64/kernel/vdso/vdso.so.dbg
- VDSOSYM include/generated/vdso-offsets.h
- LDS scripts/module.lds
- make[1]: Leaving directory '/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64'
- nvidia@nvidia-desktop:~/kernel/kernel-5.10$ ls
- android-patches block COPYING crypto drivers include ipc Kconfig kernel-int-overlays.txt lib MAINTAINERS mm NVIDIA-REVIEWERS rt-patches scripts sound usr
- arch certs CREDITS Documentation fs init Kbuild kernel kernel-overlays.txt LICENSES Makefile net README samples security tools virt
- nvidia@nvidia-desktop:~/kernel/kernel-5.10$ cd /etc/
- Display all 153 possibilities? (y or n)
- nvidia@nvidia-desktop:~/kernel/kernel-5.10$ cd /usr/src/
- cudnn_samples_v8/ linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/ tensorrt/
- jetson_multimedia_api/ nvidia/
- nvidia@nvidia-desktop:~/kernel/kernel-5.10$ cd /usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64$ ls
- arch include kernel kernel-5.10 kernel-int-overlays.txt kernel-overlays.txt Makefile nvgpu nvidia nvlink scripts source
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64$ ls
- arch include kernel kernel-5.10 kernel-int-overlays.txt kernel-overlays.txt Makefile nvgpu nvidia nvlink scripts source
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64$ cd kernel
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/kernel$ ls
- bounds.s
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/kernel$ cd ..
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64$ cd kernel
- kernel/ kernel-5.10/
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64$ cd kernel-5.10/
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/kernel-5.10$ ls
- arch certs drivers include ipc Kconfig kernel-int-overlays.txt lib mm net scripts sound usr
- block crypto fs init Kbuild kernel kernel-overlays.txt Makefile Module.symvers samples security tools virt
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/kernel-5.10$ vi Makefile
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/kernel-5.10$ cd ..
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64$ ls
- arch include kernel kernel-5.10 kernel-int-overlays.txt kernel-overlays.txt Makefile nvgpu nvidia nvlink scripts source
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64$ mkdir chardev
- mkdir: cannot create directory ‘chardev’: Permission denied
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64$ sudo mkdir chardev
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64$ cd chardev/
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$ ls
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$ vi Makefile
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$ sudo vi Makefile
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$ vi chardev.c
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$ vi Makefile
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$ sudo vi chardev.c
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$ sudo make
- make -C /lib/modules/5.10.104-tegra/build M=/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev modules
- make[1]: Entering directory '/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/kernel-5.10'
- make[2]: *** No rule to make target '/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev/chrdev.o', needed by '/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev/chrdev.mod'. Stop.
- make[1]: *** [Makefile:1854: /usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev] Error 2
- make[1]: Leaving directory '/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/kernel-5.10'
- make: *** [Makefile:10: kernel_modules] Error 2
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$ ls
- chardev.c Makefile
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$ sudo mv chardev.c chrdev.c
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$ sudo make
- make -C /lib/modules/5.10.104-tegra/build M=/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev modules
- make[1]: Entering directory '/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/kernel-5.10'
- CC [M] /usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev/chrdev.o
- MODPOST /usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev/Module.symvers
- CC [M] /usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev/chrdev.mod.o
- LD [M] /usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev/chrdev.ko
- make[1]: Leaving directory '/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/kernel-5.10'
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$ ;s
- -bash: syntax error near unexpected token `;'
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$ ls
- chrdev.c chrdev.ko chrdev.mod chrdev.mod.c chrdev.mod.o chrdev.o Makefile modules.order Module.symvers
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$ sudo insmod chrdev.ko
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$
- Message from syslogd@nvidia-desktop at Jan 29 15:22:45 ...
- kernel:[24159.304339] hello.word
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$ lsmod
- Module Size Used by
- chrdev 16384 0
- bnep 28672 2
- nvidia_modeset 1093632 4
- fuse 118784 3
- xt_conntrack 16384 1
- xt_MASQUERADE 16384 1
- nf_conntrack_netlink 45056 0
- nfnetlink 20480 2 nf_conntrack_netlink
- xt_addrtype 16384 2
- iptable_filter 16384 1
- iptable_nat 16384 1
- nf_nat 45056 2 iptable_nat,xt_MASQUERADE
- nf_conntrack 131072 4 xt_conntrack,nf_nat,nf_conntrack_netlink,xt_MASQUERADE
- nf_defrag_ipv6 24576 1 nf_conntrack
- nf_defrag_ipv4 16384 1 nf_conntrack
- libcrc32c 16384 2 nf_conntrack,nf_nat
- br_netfilter 32768 0
- lzo_rle 16384 64
- lzo_compress 16384 1 lzo_rle
- zram 32768 8
- overlay 114688 1
- input_leds 16384 0
- uvcvideo 102400 0
- videobuf2_vmalloc 20480 1 uvcvideo
- micrel 28672 1
- snd_soc_tegra210_ope 32768 1
- snd_soc_tegra186_asrc 36864 1
- snd_soc_tegra186_dspk 20480 2
- snd_soc_tegra186_arad 24576 2 snd_soc_tegra186_asrc
- snd_soc_tegra210_iqc 16384 0
- snd_soc_tegra210_mvc 20480 2
- snd_soc_tegra210_afc 20480 6
- snd_soc_tegra210_dmic 20480 4
- snd_soc_tegra210_adx 28672 4
- snd_soc_tegra210_amx 32768 4
- snd_soc_tegra210_i2s 24576 6
- snd_soc_tegra210_admaif 118784 1
- snd_soc_tegra210_mixer 45056 1
- snd_soc_tegra210_sfc 57344 4
- snd_soc_tegra_pcm 16384 1 snd_soc_tegra210_admaif
- aes_ce_blk 36864 0
- crypto_simd 24576 1 aes_ce_blk
- cryptd 28672 1 crypto_simd
- aes_ce_cipher 20480 1 aes_ce_blk
- ghash_ce 28672 0
- sha2_ce 20480 0
- sha256_arm64 28672 1 sha2_ce
- sha1_ce 20480 0
- snd_soc_spdif_tx 16384 0
- snd_soc_tegra_machine_driver 16384 0
- nct1008 24576 0
- snd_soc_tegra210_adsp 753664 1
- snd_soc_tegra210_ahub 1228800 3 snd_soc_tegra210_ope,snd_soc_tegra210_sfc
- snd_soc_tegra_utils 28672 3 snd_soc_tegra210_admaif,snd_soc_tegra_machine_driver,snd_soc_tegra210_adsp
- snd_soc_simple_card_utils 24576 1 snd_soc_tegra_utils
- userspace_alert 16384 0
- tegra210_adma 28672 2 snd_soc_tegra210_admaif,snd_soc_tegra210_adsp
- binfmt_misc 24576 1
- nvadsp 110592 1 snd_soc_tegra210_adsp
- tegra_bpmp_thermal 16384 0
- snd_hda_codec_hdmi 57344 1
- ofpart 16384 0
- cmdlinepart 16384 0
- qspi_mtd 28672 0
- snd_hda_tegra 20480 0
- mtd 69632 4 cmdlinepart,qspi_mtd,ofpart
- snd_hda_codec 118784 2 snd_hda_codec_hdmi,snd_hda_tegra
- snd_hda_core 81920 3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_tegra
- spi_tegra114 32768 0
- nvidia 1339392 9 nvidia_modeset
- loop 36864 23
- ina3221 24576 0
- pwm_fan 24576 0
- nvgpu 2494464 32
- nvmap 192512 188 nvgpu
- ramoops 28672 0
- reed_solomon 20480 1 ramoops
- ip_tables 36864 2 iptable_filter,iptable_nat
- x_tables 49152 5 xt_conntrack,iptable_filter,xt_addrtype,ip_tables,xt_MASQUERADE
- nvidia@nvidia-desktop:/usr/src/linux-headers-5.10.104-tegra-ubuntu20.04_aarch64/chardev$

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。