Notes
main
main
  • Introduction
  • linuxKernel
    • tips
    • make_help
    • old linux
      • compile_linux0.11
      • TestEnvironment
      • load_setup
      • get_hard_data
    • list
    • plist
    • fifo
    • idr
    • xarray
    • rbtree
    • maple_tree
    • syscall
    • bitmap
    • page
    • page_flags
    • page_size
    • page mapcount
    • page refcount
    • folio
    • slub
      • proc_slabinfo
      • slub_theory
      • kmalloc_kfree
      • kmem_cache
      • slab_alloc
      • slab_free
      • proc_meminfo_SReclaimable_SReclaimable
    • vmalloc
    • brk
    • mmap
    • mremap
    • mprotect
    • madvise
    • read
    • write
    • shmem
    • huge_page
    • page_fault
    • rmap
    • lru
    • multi-gen-LRU
    • page_reclaim
    • page_cache
    • page_table
    • rcu
    • kvm
    • aarch64_boot
    • tracing_system
    • cache_coherence_and_memory_consistency
    • cpu_speculates
    • mmap_lock
    • per-vma_lock
    • cgroup
    • symbol
    • campact
    • page_ext
    • mempool
    • kernelstack
    • filesystem
    • io_stack
    • workingset
    • ioremap
    • sched_period
  • linuxDebug
    • openocd_openjtag
    • i2c_tools
    • objdump
    • addr2line
    • gdb_useage
    • debug_linux_kernel_via_gdb
    • debug_linux_module_via_gdb
    • early_boot
    • sequentially_execute
    • dynamic_debug
    • research_linuxKernel_by_patch
    • tracefs
    • ebpf
    • bpftrace
    • perf
    • flame_graph
    • crash
    • ASAN_HWASAN_MTE_check_mem_bug
    • page_owner
    • vmtouch
    • fio
    • benchmark
  • linuxSystem
    • common
      • system_version
      • procfs
      • proc_sys_vm
      • cmd_ps
      • makefile
      • file_descriptor
      • psi
      • ulimit
      • top
      • delay_accounting
    • ubuntu
      • custom_kernel
      • get_cmd_src
      • record_ssh_info
      • log
      • run_custom_script
      • repo
      • cockpit
      • nfs
      • tftp
      • misc
    • fedora
      • system_upgrade
      • custom_kernel
      • lvextend
      • yt-dlp
      • jellyfin
  • linuxDriver
    • i2c_peripherals_driver
    • spi_peripherals_driver
    • gpio_subsystem
    • IRQ_driver
    • blockIO_unblockIO_async
    • linux_own_driver
    • misc_device
    • input_device
    • timer
    • atomic_spinlock_semaphore_mutex
    • lcd
    • touch_screen
    • debugfs
    • v4l2
    • mmap
  • hardware
    • paging_mmu_pt
    • iommu
  • process_thread_scheduler
    • scheduler01
    • scheduler02
    • scheduler03
    • scheduler04
    • scheduler05
    • scheduler06
  • memory_management
    • mm1
    • mm2
    • mm3
    • mm4
    • mm5
  • input_output_filesystem
    • io_fs_01
    • io_fs_02
    • io_fs_03
    • io_fs_04
  • lock_and_lockup_detector
    • general_lock
    • hung_task
    • softLockup_hardLockup
    • crash_experiment
  • MIT_6.S081
    • 6.S081_Operating_System_Engineering
    • Schedule.md
    • Class
      • Overview
      • Administrivia
    • Labs
      • Tools
      • Guidance
      • startup
      • syscall
      • page_table
      • Calling_Convention
      • traps
    • xv6
      • xv6
    • References.md
  • qemu
    • qemu_buildroot
    • qemu_busybox.md
    • Serial.md
    • demo_mini2440
      • 0_compilation_error_summary
      • 1_compilation_steps
      • 2_operation_mode
      • 3_transplant_tools_libraries
      • 4_tools_use
      • reference_website
  • tools
    • getKernelSourceCodeList
    • nat
    • shell
    • translating
    • YouCompleteMe
    • cscope
    • global
    • vscode
    • vim
    • binary
    • markdown
    • draw
    • git
    • tig
    • tmux
    • mail_client
    • download_patchset_from_LKML
    • minicom
    • clash
  • other
    • interview
    • interview_c_base
    • know_dontknow
    • Stop-Ask-Questions-The-Stupid-Ways
    • How-To-Ask-Questions-The-Smart-Way
    • docker
    • buildroot
    • rv32_to_rv64
Powered by GitBook
On this page
  • 2. 测试
  • 2.1 基本测试--使能 Linux logo 显示
  • 2.2 设置LCD作为终端控制台
  • 2.3 LCD背光调节

Was this helpful?

  1. linuxDriver

lcd

linux kernel lcd驱动

imx6ull的lcd控制器驱动已经由NXP编写好了,我们只需要在设备树dts里面配置lcd控制器的参数,就可以初始化外设lcd,如下

&lcdif {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_lcdif_dat
        &pinctrl_lcdif_ctrl>;
    display = <&display0>;
    status = "okay";

    display0: display {
        bits-per-pixel = <24>;         // 每一个像素点由24位组成
        bus-width = <24>;              // lcd需要数据总线宽度,24位

        display-timings {
            native-mode = <&timing0>;
            timing0: timing0 {
                clock-frequency = <9000000>; // LCD像素时钟,9MHZ
                hactive = <480>;             // 水平方向的分辨率
                vactive = <272>;             // 垂直方向的分辨率
                hfront-porch = <5>;
                hback-porch = <40>;
                hsync-len = <1>;
                vback-porch = <8>;
                vfront-porch = <8>;
                vsync-len = <1>;

                hsync-active = <0>;         // hsync 极性
                vsync-active = <0>;         // vsync 极性
                de-active = <1>;            // de 极性
                pixelclk-active = <0>;      // pixelclk 极性
            };
        };
    };
};

lcd还需要通过PWM控制背光强度,一般PWM驱动已经由NXP编写好了,我们只需要在设备树dts里面配置PWM即可

&pwm1 {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_pwm1>;
    status = "okay";
};

pwm1使能后,linux kernel如何知道lcd通过pwm1控制背光强度?所以我们还需要一个blacklight节点将lcd与pwm连接起来,如下:

backlight {
    compatible = "pwm-backlight";
    pwms = <&pwm1 0 5000000>;                    // PWM1 5KHZ
    brightness-levels = <0 4 8 16 32 64 128 255>;// 背光级别 0~7,对应pwm占空比 0%~100%
    default-brightness-level = <6>;              // 默认背光级别为6
    status = "okay";
};

到此,lcd驱动就完成了。

2. 测试

2.1 基本测试--使能 Linux logo 显示

Device Drivers  --->
    Graphics support  --->
        [*] Bootup logo  --->
            [*]   Standard black and white Linux logo
            [*]   Standard 16-color Linux logo
            [*]   Standard 224-color Linux logo

如果 LCD 驱动工作正常的话,在 LCD 屏幕左上角出现一个彩色的小企鹅 logo,屏幕背景色为黑色

2.2 设置LCD作为终端控制台

  • 设置uboot中的bootargs

    setenv bootargs console=tty0 console=ttymxc0,115200 [xxx]

    此处有两个终端,一个LCD终端(tty0),一个串口终端(ttymxc0),同时都有linux kernel log显示。

  • 设置终端启动bash,如tty0或ttymxc0

    $ cd buildroot
    $ make menuconfig
    System configuration  --->
        [*] Run a getty (login prompt) after boot  --->
            (tty0) TTY port
            或
            (ttymxc0) TTY port

2.3 LCD背光调节

由设备树dts的backlight节点,可知有0~7个背光亮度级别(即brightness-levels属性),默认背光亮度级别是6(即default-brightness-level属性),我们可以通过如下命令对背光亮度进行调节

$ cd /sys/class/backlight/backlight
$ cat max_brightness  # 当前支持最大的背光亮度级别,由dts的brightness-levels决定
7
$ cat brightness      # 默认当前背光亮度级别,由dts的default-brightness-level决定
6
$ echo 0 > brightness # 背光亮度级别等于0,相当于0%,灭屏
$ echo 7 > brightness # 背光亮度级别等于7,相当于100%,最亮
Previousatomic_spinlock_semaphore_mutexNexttouch_screen

Last updated 4 years ago

Was this helpful?