<em id="prnnn"><form id="prnnn"></form></em>

        <form id="prnnn"></form>

            <form id="prnnn"></form>

            <form id="prnnn"><form id="prnnn"></form></form>

                工控板首页

                ARM 核心板
                Cat.1
                ZC1 Cortex-A5,500MHz
                Cortex-A35
                M1808 AI核心板,双核A35,NPU
                Cortex-M7
                M1052 跨界处理器
                M1062 WiFi,双网口,三路CAN
                Cortex-A7
                M6G2C 8串口,528MHz
                A6G2C 多串口,WiFi,蓝牙
                Cortex-A7
                M6Y2C 8串口,800MHz
                A6Y2C 多串口,WiFi,蓝牙
                Cortex-A8
                M335x-T 多串口、双网、双CAN
                A3352 wifi,蓝牙
                ARM9
                M28x-T 多串口多网口多CAN
                M280 6串口,单网口,邮票孔
                A287 wifi,蓝牙
                A280 Wi-Fi、zigbee、Mifare
                AW28x AWorks
                Cortex-A9
                M6708-T i.MX6系列,800MHz
                M7015 双Cortex-A9 , FPGA , 766MHz
                ARM工控板
                采集器、网关
                IoT-9608 网络控制器A8核
                EPC-287 6串口、双网口
                IoT3000A-AWI 物联网网关ARM9核
                IoT7000A-LI 物联网网关A7
                IoT9000A-LI 物联网网关A9双核
                IoT9100A-LI 物联网网关A9四核
                控制主机
                TKM系列显控一体机 AWTK,528MHz
                DCP-3000L 控制单元,A8带外壳
                DCP-1000L 显控终端,A7带外壳
                DCP-5000L A9带外壳
                电力、通讯管理
                IoT-9608 网络控制器
                EPC-6G2C-L/IoT-6G2C-L
                8串口,双CAN双网口
                能耗管理、环保数采
                IoT-9608 网络控制器
                EPC-6G2C-L/IoT-6G2C-L
                8串口,双CAN双网口
                机械臂、自动化
                EPC-9600 双路RS-485,双路CAN
                IoT-9608 网络控制器
                实用必选配件

                【Linux学习小技巧】Linux内核开发工具介绍2

                通过make menuconfig(make xconfig或者make gconfig)命令配置内核的时候,从Kconfig文件读取菜单,配置完毕保存到文件名为.config的内核配置文件中,供Makefile文件在编译内核时使用。

                1.1.1 Kconfig基本语法

                如程序清单.1所示代码摘自文件,是一个比较典型的Kconfig文件片段,包含了Kconfig的基本语法。

                程序清单1drivers/char/Kconfig片段

                menu "Character devices"

                source "drivers/tty/Kconfig"

                config DEVKMEM

                bool "/dev/kmem virtual device support"

                default y

                help

                Say Y here if you want to suppor

                1. 子菜单

                通过menu和endmenu来定义一个子菜单,程序清单1所示代码定义了一个“Character devices”子菜单,子菜单在界面中用“--->”表示,如图1所示。
                图1menu定义的子菜单

                子菜单的菜单项则由config来定义,随后的“bool”、“default”、“help”等都是该菜单项的属性:
                config DEVKMEM

                bool "/dev/kmem virtual device support"

                这两行语句定义了一个bool选项,在.config中的配置变量名称为CONFIG_DEVKMEM,选项提示信息为“/dev/kmem virtual device support”,在内核配置界面的实际表现为:

                [*] /dev/kmem virtual device support

                由于设置其默认属性default为y,所以该选项默认选中。

                help引出帮助信息,在内核配置界面,选择选项后,通过可以查看帮助信息。

                2. 属性

                类型定义:每个菜单项都必须定义类型,可选类型有:bool、tristate、string、hex和int,各类型描述如表1所列。

                表1菜单项类型和说明

                定义选项的类型后面可以加菜单信息,用引号(“”)给出,留空则不加提示信息。

                对于布尔型选项,在配置界面用[]表示:

                [*] /dev/kmem virtual device support

                [*]表示选中,对应CONFIG_XXX=y,[ ]则表示未选中。

                对于三态选项,在配置界面用<>表示:

                <*> Kernel .config support

                <*>表示选中,对应CONFIG_XXXx=y,表示编译为???,对应CONFIG_XXX=m,<>表示未选中。

                子菜单也可同时设置类型,如下列代码在定义PWM菜单的同时定义了菜单属性为三态:

                menuconfig GENERIC_PWM
                tristate "PWM Support"
                default n
                help
                Enables PWM device support implemented via a generic
                framework.If unsure, say N.

                在配置界面表现为:

                <> PWM Support--->

                说明:子菜单的配置值会影响其子选项的可能值。例如三态子菜单配置为,则其三态子选项依旧可有3种可能值,即可配置为、或者不选中;而三态子菜单配置为,则其子选项只有和不选中两种状态可用。

                默认值:有写选项可以设置默认值,无论是哪种类型,都可以通过default设置其默认值,例如:

                config ARM
                bool
                default y
                select HAVE_AOUT

                选中:前面这个示例的select,表示了一种选中关系,即选中某个选项后,会自动选中某个或者某些选项。前面这个示例表明,选中ARM后,会自动选中HAVE_AOUT。

                依赖关系:如果一个选项能否生效与否与其它选项的设置有关,则必须通过depends on来声明这种依赖关系。例如,只有使能了SMP才能设置CPU个数变量NR_CPUS,在Kconfig中则写成:

                config NR_CPUS
                int "Maximum number of CPUs (2-32)"
                range 2 32
                depends on SMP
                default "4"

                帮助:通过help关键字引入帮助,帮助的正文必须另起一行。

                菜单选项属性的每个关键字,必须用TAB键与行首隔开,不能用等数的空格替代。

                3. 目录层次迭代

                通过source可以直接引用下级目录的Kconfig文件,形成新的菜单项或者子菜单,这样方便每个目录独立管理各自的配置内容?!皊ource "drivers/tty/Kconfig"”就是直接引用文件,形成更多菜单(项)。

                1.1.2 配置项和配置开关

                通过config定义的菜单配置项,在内核配置后会产生一个以“CONFIG_”开头的配置开关变量,该开关变量可在Makefile中或者源代码中使用。

                例如:“config BAR”将会产生一个开关变量CONFIG_BAR,在Makefile中可以这么使用:

                obj-$(CONFIG_BAR)+= file_bar.o

                在源代码中可用这个开关变量在源代码中可用这个开关变量来进行一些条件处理,例如:

                #if defined (CONFIG_BAR)

                实际处理代码

                #endif

                如果定义的BAR是三态变量,则还可以根据需要这样使用:

                #if defined (CONFIG_BAR)|| defined (CONFIG_BAR_MODULE)

                实际处理代码

                #endif

                网购购彩 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>