覆盆子系统配置 /boot/config.txt
原文链接https://elinux.org/RPiconfig 传统意义上没有树莓派BIOS, 因此,各种系统配置参数通常存在"config.txt"在这个文本文件中.
树莓派的config.txt文件会在ARM在内核初始化之前GPU读取.
当前激活设置可以使用以下命令:
get_config <config> |
含义 |
---|---|
vcgencmd get_config int |
所有设置的整形配置参数 |
vcgencmd get_config str |
所有已设置的字符配置参数 |
e.g.vcgencmd get_config arm_freq
文件格式
当值是整形手术的格式"属性=值". 每行只指定一个参数. 使用#井号作为注释的开始.
以下是示例文件
# Set stdv mode to PAL (as used in Europe) sdtv_mode=2 # Force the monitor to HDMI mode so that sound will be sent over HDMI cable hdmi_drive=2 # Set monitor mode to DMT hdmi_group=2 # Set monitor resolution to 1024x768 XGA 60Hz (HDMI_DMT_XGA_60) hdmi_mode=16 # Make display smaller to stop text spilling off the screen overscan_left=20 overscan_right=12 overscan_top=10 overscan_bottom=10
这是另一个示例文件, 扩展文档包含各种功能.
内存
params | default | desc |
---|---|---|
disable_l2cache | 0 | 禁止ARM访问GPU的二级缓存. 二级缓存需要在内核中关闭. 默认关闭. |
gpu_mem GPU | 64 | 内存以兆为单位. 设置ARM和GPU两者之间的内存分配. ARM将获得剩余的所有内存. 最小设为16. |
gpu_mem_256 | NaN | 对于有256MB树莓派的内存GPU内存设置. 512MB的派请忽略. 会覆盖gpu_mem. 最大设为192. 默认不设置 |
gpu_mem_512 | NaN | 对于有512MB树莓派的内存GPU内存设置. 256MB的派请忽略. 会覆盖gpu_mem. 最大设为448. 默认不设置 |
disable_pvt | 0 | 禁止每500毫秒调整一次RAM的刷新率 (RAM温度测量). |
CMA - 动态内存分配
自2012年11月19号, 开始支持固件和内核CMA, 这意味着运行时可以动态管理ARM和GPU两者之间的内存分配. 这儿有相关config.txt示例. cma_lwm 当GPU可用内存低于cma_lwm所设值, 将会向ARM请求一些内存. cma_hwm 当GPU可用内存高于cma_hwm所设值, 将会向ARM释放一些内存. 要启用CMA,需要添加以下参数cmdline.txt文件里:coherent_pool=6M smsc95xx.turbo_mode=N
官方讨论
视频
视频模式选项
sdtv_mode 视频系统设置为复合信号输出(默认为0) sdtv_mode=0 NTSC sdtv_mode=1 日本版NTSC – 无基座 sdtv_mode=2 PAL sdtv_mode=3 巴西版PAL – 副载波为525/60而不是625/50
sdtv_aspect 设置复合信号输出宽高比(默认为1)
sdtv_aspect=1 4:3 sdtv_aspect=2 14:9 sdtv_aspect=3 16:9
sdtv_disable_colourburst 禁止复合信号输出彩色副载波群. 图片将显示为单色, 但也许会更清楚
sdtv_disable_colourburst=1 禁止输出彩色副载波群
hdmi_safe 使用"安全模式"尝试设置HDMI最大兼容性启动. 这和下面的组合是一样的: hdmi_force_hotplug=1, config_hdmi_boost=4, hdmi_group=2, hdmi_mode=4, disable_overscan=0
hdmi_safe=1
hdmi_ignore_edid 假如你的显示器是中国生产的垃圾货, 允许系统忽略EDID显示数据
hdmi_ignore_edid=0xa5000080``` hdmi_edid_file 当设为1时, 将会从edid.dat文件中读取EDID数据示器而不是数据.[1]
hdmi_edid_file=1``` hdmi_force_edid_audio 伪装成支持所有音频格式播放, 即使报告不支持,也允许通过DTS/AC3.
hdmi_force_edid_audio=1``` hdmi_force_edid_3d 伪装成全部CEA模式都支持3D, 即便EDID并不支持.
hdmi_force_edid_3d=1``` avoid_edid_fuzzy_match 禁止模糊匹配EDID中描述的模式. 即使错误被掩盖, 也选择匹配分辨率和最接近帧率的标准模式.
avoid_edid_fuzzy_match=1``` hdmi_ignore_cec_init 初始激活源消息不发送. 避免重启(启用)CEC)TV待机结束并切换频道.
hdmi_ignore_cec_init=1``` hdmi_ignore_cec 伪装成TV不支持CEC. 不支持任何东西CEC功能.
hdmi_ignore_cec=1``` hdmi_force_hotplug 伪装成HDMI检测到热插拔信号, 出现HDMI接入显示器
hdmi_force_hotplug=1 即使没有检测到HDMI还应使用显示器HDMI模式``` hdmi_ignore_hotplug 伪装成HDMI未检测到热插拔信号, 出现HDMI显示器未接入
hdmi_ignore_hotplug=1 即便检测到HDMI还应使用混合模式``` hdmi_pixel_encoding 强制像素编码模式. 默认情况下使用EDID请求模式, 所以不需要修改.
hdmi_pixel_encoding=0 default (limited for CEA, full for DMT) hdmi_pixel_encoding=1 RGB limited (16-235) hdmi_pixel_encoding=2 RGB full ( 0-255) hdmi_pixel_encoding=3 YCbCr limited (16-235) hdmi_pixel_encoding=4 YCbCr limited ( 0-255)``` hdmi_drive 选择HDMI还是DVI模式
hdmi_drive=1 DVI模式 (没声音) hdmi_drive=2 HDMI模式 (如果支持并启用声音输出) hdmi_group 设置HDMI类型``` 不指定组, 或者设为0, 将会使用EDID报告的首选组.
hdmi_group=1 CEA hdmi_group=2 DMT
hdmi_mode 设置在CEA或DMT屏幕分辨率在格式下
当hdmi_group=1 (CEA)下列值有效 hdmi_mode=1 VGA hdmi_mode=2 480p 60Hz hdmi_mode=3 480p 60Hz H hdmi_mode=4 720p 60Hz hdmi_mode=5 1080i 60Hz hdmi_mode=6 480i 60Hz hdmi_mode=7 480i 60Hz H hdmi_mod=8 240p 60Hz hdmi_mode=9 240p 60Hz H hdmi_mode=10 480i 60Hz 4x hdmi_mode=11 480i 60Hz 4x H hdmi_mode=12 240p 60Hz 4x hdmi_mode=13 240p 60Hz 4x H hdmi_mode=14 480p 60Hz 2x hdmi_mode=15 480p 60Hz 2x H hdmi_mode=16 1080p 60Hz hdmi_mode=17 576p 50Hz hdmi_mode=18 576p 50Hz H hdmi_mode=19 720p 50Hz hdmi_mode=20 1080i 50Hz hdmi_mode=21 576i 50Hz hdmi_mode=22 576i 50Hz H hdmi_mode=23 288p 50Hz hdmi_mode=24 288p 50Hz H hdmi_mode=25 576i 50Hz 4x hdmi_mode=26 576i 50Hz 4x H hdmi_mode=27 288p 50Hz 4x hdmi_mode=28 288p 50Hz 4x H hdmi_mode=29 576p 50Hz 2x hdmi_mode=30 576p 50Hz 2x H hdmi_mode=31 1080p 50Hz hdmi_mode=32 1080p 24Hz hdmi_mode=33 1080p 25Hz hdmi_mode=34 1080p 30Hz hdmi_mode=35 480p 60Hz 4x hdmi_mode=36 480p 60Hz 4xH hdmi_mode=37 576p 50Hz 4x hdmi_mode=38 576p 50Hz 4x H hdmi_mode=39 1080i 50Hz reduced blanking hdmi_mode=40 1080i 100Hz hdmi_mode=41 720p 100Hz hdmi_mode=42 576p 100Hz hdmi_mode=43 576p 100Hz H hdmi_mode=44 576i 100Hz hdmi_mode=45 576i 100Hz H hdmi_mode=46 1080i 120Hz hdmi_mode=47 720p 120Hz hdmi_mode=48 480p 120Hz hdmi_mode=49 480p 120Hz H hdmi_mode=50 480i 120Hz hdmi_mode=51 480i 120Hz H hdmi_mode=52 576p 200Hz hdmi_mode=53 576p 200Hz H hdmi_mode=54 576i 200Hz hdmi_mode=55 576i 200Hz H hdmi_mode=56 480p 240Hz hdmi_mode=57 480p 240Hz H hdmi_mode=58 480i 240Hz hdmi_mode=59 480i 240Hz H H表示16:9比例(正常是4:3). 2x表示双倍像素(即更高的像素时脉, 每个像素重复两次) 4x表示四倍像素(即更高的像素时脉, 每个像素重复四次)```
当hdmi_group=2 (DMT)时,下列值有效 像素时脉是有限制的, 最高支持的模式是1920x1200 @60Hz with reduced blanking.
hdmi_mode=1 640x350 85Hz
hdmi_mode=2 640x400 85Hz
hdmi_mode=3 720x400 85Hz
hdmi_mode=4 640x480 60Hz
hdmi_mode=5 640x480 72Hz
hdmi_mode=6 640x480 75Hz
hdmi_mode=7 640x480 85Hz
hdmi_mode=8 800x600 56Hz
hdmi_mode=9 800x600 60Hz
hdmi_mode=10 800x600 72Hz
hdmi_mode=11 800x600 75Hz
hdmi_mode=12 800x600 85Hz
hdmi_mode=13 800x600 120Hz
hdmi_mode=14 848x480 60Hz
hdmi_mode=15 1024x768 43Hz DO NOT USE
hdmi_mode=16 1024x768 60Hz
hdmi_mode=17 1024x768 70Hz
hdmi_mode=18 1024x768 75Hz
hdmi_mode=19 1024x768 85Hz
hdmi_mode=20 1024x768 120Hz
hdmi_mode=21 1152x864 75Hz
hdmi_mode=22 1280x768 reduced blanking
hdmi_mode=23 1280x768 60Hz
hdmi_mode=24 1280x768 75Hz
hdmi_mode=25 1280x768 85Hz
hdmi_mode=26 1280x768 120Hz reduced blanking
hdmi_mode=27 1280x800 reduced blanking
hdmi_mode=28 1280x800 60Hz
hdmi_mode=29 1280x800 75Hz
hdmi_mode=30 1280x800 85Hz
hdmi_mode=31 1280x800 120Hz reduced blanking
hdmi_mode=32 1280x960 60Hz
hdmi_mode=33 1280x960 85Hz
hdmi_mode=34 1280x960 120Hz reduced blanking
hdmi_mode=35 1280x1024 60Hz
hdmi_mode=36 1280x1024 75Hz
hdmi_mode=37 1280x1024 85Hz
hdmi_mode=38 1280x1024 120Hz reduced blanking
hdmi_mode=39 1360x768 60Hz
hdmi_mode=40 1360x768 120Hz reduced blanking
hdmi_mode=41 1400x1050 reduced blanking
hdmi_mode=42 1400x1050 60Hz
hdmi_mode=43 1400x1050 75Hz
hdmi_mode=44 1400x1050 85Hz
hdmi_mode=45 1400x1050 120Hz reduced blanking
hdmi_mode=46 1440x900 reduced blanking
hdmi_mode=47 1440x900 60Hz
hdmi_mode=48 1440x900 75Hz
hdmi_mode=49 1440x900 85Hz
hdmi_mode=50 1440x900 120Hz reduced blanking
hdmi_mode=51 1600x1200 60Hz
hdmi_mode=52 1600x1200 65Hz
hdmi_mode=53 1600x1200 70Hz
hdmi_mode=54 1600x1200 75Hz
hdmi_mode=55 1600x1200 85Hz
hdmi_mode=56 1600x1200 120Hz reduced blanking
hdmi_mode=57 1680x1050 reduced blanking
hdmi_mode=58 1680x1050 60Hz
hdmi_mode=59 1680x1050 75Hz
hdmi_mode=60 1680x1050 85Hz
hdmi_mode=61 1680x1050 120Hz reduced blanking
hdmi_mode=62 1792x1344 60Hz
hdmi_mode=63 1792x1344 75Hz
hdmi_mode=64 1792x1344 120Hz reduced blanking
hdmi_mode=65 1856x1392 60Hz
hdmi_mode=66 1856x1392 75Hz
hdmi_mode=67 1856x1392 120Hz reduced blanking
hdmi_mode=68 1920x1200 reduced blanking
hdmi_mode=69 1920x1200 60Hz
hdmi_mode=70 1920x1200 75Hz
hdmi_mode=71 1920x1200 85Hz
hdmi_mode=72 1920x1200 120Hz reduced blanking
hdmi_mode=73 1920x1440 60Hz
hdmi_mode=74 1920x1440 75Hz
hdmi_mode=75 1920x1440 120Hz reduced blanking
hdmi_mode=76 2560x1600 reduced blanking
hdmi_mode=77 2560x1600 60Hz
hdmi_mode=78 2560x1600 75Hz
hdmi_mode=79 2560x1600 85Hz
hdmi_mode=80 2560x1600 120Hz reduced blanking
hdmi_mode=81 1366x768 60Hz
hdmi_mode=82 1080p 60Hz
hdmi_mode=83 1600x900 reduced blanking
hdmi_mode=84 2048x1152 reduced blanking
hdmi_mode=85 720p 60Hz
hdmi_mode=86 1366x768 reduced blanking```
|params|desc|
|-|-|
|overscan_left |左侧跳过像素数|
|overscan_right |右侧跳过像素数|
|overscan_top |顶部跳过像素数|
|overscan_bottom |底部跳过像素数|
|framebuffer_width |控制台framebuffer宽度, 以像素为单位. 默认是显示器宽度减去超出扫描.|
|framebuffer_height |控制台framebuffer高度, 以像素为单位. 默认是显示器高度减去超出扫描.|
|framebuffer_depth |控制台framebuffer深度, 以位为单位. 默认是16位. 8位也是有效的, 但是默认RGB调色板会导致屏幕不可读. 24位效果更好 ,但是2012年6月15号发现有显示混乱问题. 32位没有混乱问题, 但是需要设置framebuffer_ignore_alpha=1, 并在2012年6月15号发现颜色显示错误.|
|framebuffer_ignore_alpha |设为1将禁用alpha通道. 仅对32位有效.|
|test_mode| 允许在启动时做声音与图像测试.|
|disable_overscan |设为1将禁用超出扫描.|
|config_hdmi_boost| 设置HDMI接口的信号强度. 默认为0. 如果出现HDMI干扰问题可以试试设为4. 最大为7.|
display_rotate 顺时针旋转屏幕显示 (默认为0) 或者翻转显示.
display_rotate=0 正常 display_rotate=1 90度 display_rotate=2 180度 display_rotate=3 270度 display_rotate=0x10000 水平翻转 display_rotate=0x20000 垂直翻转
注意: 旋转90度或者270度额外需要GPU内存, 所以在GPU只分配到16M的时候旋转会无效. 可能的原因:
`Crashes my RPI before Linux boots if set to "1" -- REW 20120913.`
##哪些值对我的显示器有效?
你的HDMI显示器可能只支持一部分设置. 想要找出支持哪些设置, 可以使用下面的方法.
把输出格式设为VGA 60Hz (hdmi_group=1 hdmi_mode=1) 然后启动树莓派
输入下列命令可以获取CEA支持模式的列表
`/opt/vc/bin/tvservice -m CEA`
输入下列命令可以获取DMT支持模式的列表
`/opt/vc/bin/tvservice -m DMT`
输入下列命令可以获取当前设置状态
`/opt/vc/bin/tvservice -s`
输入下列命令可以从显示器获取更多详细信息
`/opt/vc/bin/tvservice -d edid.dat /opt/vc/bin/edidparser edid.dat`
使用默认HDMI模式去排除问题时, edid.dat文件同样会提供信息
##许可的解码器
你可以购买绑定树莓派CPU序列号的证书来使用额外的硬件解码器.
decode_MPG2 可开启MPEG-2硬解的序列号.
decode_MPG2=0x12345678
decode_WVC1 可开启VC-1硬解的序列号.
decode_WVC1=0x12345678
可在多台树莓派间共享SD卡的序列号. 同时最多8个证书.
decode_XXXX=0x12345678,0xabcdabcd,0x87654321,...
###启动
`disable_commandline_tags `在启动内核前, 通过改写ATAGS (0x100处的内存)来阻止start.elf
`cmdline (string) `命令行参数. 可用来代替cmdline.txt文件
`kernel (string) `加载指定名称的内核镜像文件启动内核. 默认为"kernel.img"
`kernel_address `加载kernel.img文件地址
`kernel_old (bool) `为1时, 从0x0处加载内核
`ramfsfile (string) `要的加载的ramfs文件
`ramfsaddr `要加载的ramfs文件地址
`initramfs (string address) `要加载的ramfs文件及其地址 (就是把ramfsfile+ramfsaddr合并为一项).
注意: 这项使用与其他项不同的语法 - 不要在这用"="号. 正确示例:
initramfs initramf.gz 0x00800000
device_tree_address 加载device_tree的地址
`init_uart_baud `初始化uart波特率. 默认为115200
`init_uart_clock `初始化uart时序. 默认为3000000 (3Mhz)
`init_emmc_clock `初始化emmc时序. 默认为100000000 (100MHz)
`boot_delay `在加载内核前在start.elf等待指定秒. 总延迟=`1000 * boot_delay + boot_delay_ms`. 默认为1
`boot_delay_ms `在加载内核前在start.elf等待指定毫秒. 默认为0
`avoid_safe_mode` 如果设为1, 将不以安全模式启动. 默认为0
###超频
最新的内核有一个默认开启"ondemand"调速器的cpu频率内核驱动. 未开启超频并不会有任何影响. 一旦你开超频, ARM频率将随处理器负载而变化. 只有在调速器需要时才会使用非默认值. 你可以使用*_min配置选项来调整最低值, 或者使用force_turbo=1来禁用动态超频.
当芯片温度达到85°C运行时会关闭超频及超压, 直到冷却. 即使在25°C环境温度下使用最高设置, 也不要让温度达到极限.
####超频选项
|参数| 说明|
|-|-|
|arm_freq| ARM频率,以MHz为单位. 默认为700|
|gpu_freq| 同时设置core_freq, h264_freq, isp_freq, v3d_freq. 默认为250|
|core_freq| GPU处理器核心频率,以MHz为单位. 由于GPU要驱动二级缓存, 对ARM性能会造成影响. 默认为 250|
|h264_freq| 视频硬解模块频率,以MHz为单位. 默认为250|
|isp_freq| 图像传感器管道模块频率,以MHz为单位. 默认为250|
|v3d_freq| 3D模块频率,以MHz为单位. 默认为250|
|avoid_pwm_pll |不要把锁相环用在PWM音频. 这会略微降低模拟音频的效果. 空闲的锁相环允许从剩余GPU独立设置core_freq, 这将会比超频有更多权限. 默认为0|
|sdram_freq |SDRAM频率,以MHz为单位.默认为400|
|over_voltage| ARM/GPU核心电压调节. [-16,8]用0.025V步进等同于[0.8V,1.4V]. 默认为0 (1.2V). 只有在指定 force_turbo或current_limit_override时 (会设置保修位), 才允许数值在6以上
`over_voltage_sdram 同时设置over_voltage_sdram_c, over_voltage_sdram_i, over_voltage_sdram_p`
|parmas|desc|
|-|-|
|over_voltage_sdram_c| SDRAM控制器电压调节. [-16,8]用0.025V步进等同于[0.8V,1.4V]. 默认为0 (1.2V)
|over_voltage_sdram_i| SDRAM I/O电压调节. [-16,8]用0.025V步进等同于[0.8V,1.4V]. 默认为0 (1.2V)
|over_voltage_sdram_p| SDRAM phy电压调节. [-16,8]用0.025V步进等同于[0.8V,1.4V]. 默认为0 (1.2V)
|force_turbo| 关闭动态CPU频率驱动及下面的最小设置. 开启h264/v3d/isp超频. 默认为0. 会设置保修位.
|initial_turbo| 在启动时以指定秒数 (上限为60) 或者以CPU频率来开启急速模式. 如果已经超频, 能对SD卡错误问题有改善. 默认为0 .
|arm_freq_min| 设置动态时序的最小arm_freq. 默认为700
|core_freq_min| 设置动态时序的最小core_freq. 默认为250
|sdram_freq_min| 设置动态时序的最小sdram_freq. 默认为400
|over_voltage_min| 设置动态时序的最小over_voltage. 默认为0
|temp_limit |过热保护. 当芯片达到指定温度就把时序和电源切换会默认值. 把此值设高于默认值将影响保修. 默认为85
|current_limit_override| 当设为"0x5A000020"时, 禁止SMPS限流保护. 在超频过高无法重启时设置此项会有所帮助. 会设置保修位.
###force_turbo模式
`force_turbo=0`
开启对ARM核心,GPU核心和SDRAM的动态时序及电压. 在忙的时候ARM频率会提高到"arm_freq"并在闲的时候降低到"arm_freq_min". "core_freq", "sdram_freq"和"over_voltage"的行为都一样. "over_voltage"最高为6 (1.35V). h264/v3d/isp部分的非默认值将被忽略.
`force_turbo=1`
关闭动态时序, 因此所有频率和电压会保持高值. h264/v3d/isp GPU部分的超频也会开启, 等同于设置"over_voltage"为8 (1.4V).
###监测温度及电压
要检测树莓派的温度, 看: `/sys/class/thermal/thermal_zone0/temp`
要检测树莓派当前的频率, 看: `/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq`
要检测树莓派电源装置的电压, 你需要一个万用电表, 接上电源测试点, 或者扩展头.
通常来说要保持核心温度低于70度, 电压高于4.8V. (另外请注意, 不要用那种便宜的USB电源, 那基本上是4.2V的, 这是因为那本来就是为充3.7V锂电池设计的, 根本无法为树莓派提供稳定的5V电压). 此外, 用散热片也是个好主意, 尤其是你把树莓派装到了壳子里. 一个合适的散热器是自带不干胶栅格状的 14x14x10 mm 散热片.
其他不翻。
2人点赞
linux