On Sat, Jan 2, 2021 at 12:28 AM Randy Dunlap <rdun...@infradead.org> wrote: > > Hi, > > On 1/1/21 1:55 AM, Hongyi Zhao wrote: > > On Fri, Jan 1, 2021 at 2:32 PM Randy Dunlap <rdun...@infradead.org> wrote: > >> > >> On 12/31/20 8:51 PM, Hongyi Zhao wrote: > >>> Hi, > >>> > >>> I want to build the realtime Linux for ROS 2 according to the > >>> guidelines here: > >>> <https://index.ros.org/doc/ros2/Tutorials/Building-Realtime-rt_preempt-kernel-for-ROS-2/>. > >>> > >>> For this purpose, I must enable the rt_preempt relative options in the > >>> kernel withe the following method interactively: > >>> > >>> $ make menuconfig > >>> > >>> and set the following > >>> > >>> # Enable CONFIG_PREEMPT_RT > >>> -> General Setup > >>> -> Preemption Model (Fully Preemptible Kernel (Real-Time)) > >>> (X) Fully Preemptible Kernel (Real-Time) > >>> > >>> # Enable CONFIG_HIGH_RES_TIMERS > >>> -> General setup > >>> -> Timers subsystem > >>> [*] High Resolution Timer Support > >>> > >>> # Enable CONFIG_NO_HZ_FULL > >>> -> General setup > >>> -> Timers subsystem > >>> -> Timer tick handling (Full dynticks system (tickless)) > >>> (X) Full dynticks system (tickless) > >>> > >>> # Set CONFIG_HZ_1000 (note: this is no longer in the General Setup > >>> menu, go back twice) > >>> -> Processor type and features > >>> -> Timer frequency (1000 HZ) > >>> (X) 1000 HZ > >>> > >>> # Set CPU_FREQ_DEFAULT_GOV_PERFORMANCE [=y] > >>> -> Power management and ACPI options > >>> -> CPU Frequency scaling > >>> -> CPU Frequency scaling (CPU_FREQ [=y]) > >>> -> Default CPUFreq governor (<choice> [=y]) > >>> (X) performance > >>> > >>> But this is very inconvenient for doing the above job in script. Is > >>> there an alternative method to generate the above configurations for > >>> kernel compilation non-interactively in script. > >> > >> Hi, > >> You can use scripts/config in the kernel source tree. > >> Something like this (I don't have RT kernel sources): > >> > >> > >> scripts/config -e PREEMPT_RT > >> scripts/config -e HIGH_RES_TIMERS > >> scripts/config -e NO_HZ_FULL > >> scripts/config -e HZ_1000 > >> scripts/config -e CPU_FREQ_DEFAULT_GOV_PERFORMANCE > > > > Wonderful. Thanks a lot for your instructions. I really have noticed > > this tool but failed to figure out the corresponding translation rules > > for the options used by menuconfig and this script. > > > > BTW, how do you figure out the above options/arguments corresponding > > to the ones I've mentioned previously? > > > > Oh, I just took the ones that you had listed and removed the leading > "CONFIG_" from them. > > >> > >> Note that if any of those have other Kconfig dependencies, those Kconfig > >> symbols will also have to be enabled for this to work. > > > > How to know whether an option has other Kconfig dependencies and find > > the corresponding symbols/arguments for feeding to scripts/config? > > Use one of the interactive config tools (nconfig, xconfig). > They will show you dependencies, but you may have to enable other > symbols first. > > Maybe it would be easier to do a temporary 'make allmodconfig' > to have the symbols that you are interested in be enabled, then > you can find them and look at their dependencies.
It sounds still complicated for manually operation of the above mentioned procedure even by the virtue of scripts/config. The more feasible way should be done with python package/binding/library programmatically, but I'm not sure whether such stuff exists. BR, -- Assoc. Prof. Hongyi Zhao <hongyi.z...@gmail.com> Theory and Simulation of Materials Hebei Polytechnic University of Science and Technology engineering NO. 552 North Gangtie Road, Xingtai, China