3. 例程说明¶
3.1. 使用例程¶
下载开发板资料,1-程序源码_使用手册 文件夹,解压 ebf_hpm6750_code 。
打开例程后先调整Options的调试配置:如果使用DAP,根据 2.4章节 3.CMSIS-DAP 调试配置 小节 说明,修改OpenOCD组件实际绝对路径与 cmsis_dap.cfg ;如果使用J-Link,根据第一章说明设置切换JLINK即可。
3.2. 例程介绍¶
例程为生成hpm6750evkmini或hpm6750ev2官方开发板同名例程并本地化后修改适配。
各例程中的borad.c/h、pinmux.c/h 有当前例程用不上或者引脚不一致的部分,请根据例程实际注释、修改的内容查看,取需要的部分即可。
生成其他例程进行适配时,可先文本编辑 xxx.emProject 工程文件,修改:link_symbol_definitions=”_flash_size=32M;_extram_size=32M; 与sdram例程修改部分。
以下举例例程的主要适配修改。
hello_world
运行后打印测试信息,无特别改动。改例程本地化后保留了原本大部分文件,其他例程已删除用不上的。
drivers/gpio
运行后开发板底板三个绿灯闪烁,闪烁完后按三个KEY分别对应翻转三个灯。
gpio配置可参考使用官方引脚配置工具,见第四章介绍。
drivers/femc/sdram
运行后打印sdram测试过程。
修改 board.h BOARD_SDRAM_SIZE 宏对应实际核心板 (32 * SIZE_1MB) 。
修改 board.h BOARD_SDRAM_PORT_SIZE 宏对应实际核心板 FEMC_SDRAM_PORT_SIZE_16_BITS 。
修改 pinmux.c init_sdram_pins 函数补充一句 : HPM_IOC->PAD[IOC_PAD_PC22].FUNC_CTL = IOC_PC22_FUNC_CTL_FEMC_A_12;
可将 init_sdram_pins 函数内容复制给其他工程。
drivers/sdxc/sd_fatfs
开发板插入TF卡,运行后根据打印提示发送测试项目。
修改board.h BOARD_APP_SDCARD_SUPPORT_1V8 宏为(0),修改board.h BOARD_APP_SDCARD_SUPPORT_VOLTAGE_SWITCH 宏为(0)。
lwip/lwip_tcpecho_multi_ports_freertos
将开发板双网口同时接入路由器,运行打印显示网线接入后等待DHCP分配IP,IP分配完成后可用网络调试助手作为client连接开发板。TCP服务端0端口: 5001,TCP服务端1端口: 5002。
(SDK1.5~1.6)原例程本地化后需要将 sdk_env-xxx\hpm_sdk\samples\lwip\common 、sdk_env-xxx\hpm_sdk\samples\lwip\ports 文件夹内容手动复制一次,并在工程里面重新添加文件。
例程修改为使用两组RMII和LAN8720 PHY,搜索程序中附带了“//EBF_HPM6750”注释句的部分。
编辑lwip_tcpecho_multi_ports_freertos_example.emProject工程文件,删除默认的__USE_RTL8211、__USE_RTL8201、LWIP_DHCP定义, 工程Options ——> Preprocessor ——> Preprocessor Definitions 添加 __USE_LAN8720, lwipopts.h 设置 LWIP_DHCP 宏值。
drivers/lcdc
默认使用5寸屏幕演示图形,lcd使用引脚与官方例程一致。
编辑lcdc_example.emProject工程文件,删除默认的 CONFIG_PANEL_RGB_TM070RDH13 定义, 工程Options ——> Preprocessor ——> Preprocessor Definitions 添加 CONFIG_PANEL_RGB_EBF_5INCH, hpm_panel.c panel_list[]添加一份自定义屏幕 panel_ebf_5inch, 参考tm070rdh13.c添加一份自定义 ebf_5inch.c,修改对应适配实际屏幕的像素时钟、时序。
按上面同样方式适配7寸屏幕,如果使用7寸屏,修改CONFIG_PANEL_RGB_EBF_5INCH为CONFIG_PANEL_RGB_EBF_7INCH即可。
drivers/uart/uart_irq
从调试串口UART0和另一组串口测试基础的收发中断。
UART0默认使用FIFO,接收够阈值字节后主动触发uart_intr_tx_slot_avail中断标志,在下次中断的对应标志处理里回发。
另一组串口参考例程UART0过程编写,修改 MODULE_XXX 宏对应实际测试串口组,module_uart_init 内修改实际用脚初始化,默认使用板载连接了TTL转232部分的UART7,默认不开启FIFO,收一字节回发一字节。
drivers/cam_dvp
使用野火5寸RGB屏与ov5640摄像头,成功运行代码后,可在屏幕上显示摄像头画面。
修改board.h BOARD_CAM_I2C_BASE等摄像头相关宏定义,对应开发板原理图修改为使用I2C3,添加RST和PWDN脚的宏定义,在board.c 修改board_init_i2c函数注释掉不使用的部分。
在pinmux.c init_cam_pins函数对应添加RST和PWDN脚的初始化。
在cam_dvp.c init_camera_device函数添加camera_context.write_rst和camera_context.write_pwdn的赋值,并对应添加函数定义。
相关修改具体搜索程序里附带”//EBF”注释句部分。
参考drivers/lcdc例程介绍,添加通过修改宏切换5寸或7寸RGB屏。
audio_codec/lvgl_audio_player
使用野火5寸RGB屏,在根目录存储wav、mp3格式歌曲的MicroSD卡插入到开发板卡槽中,使用3.5mm双头音频线,音频输出从开发板绿色音频输出口和喇叭座子播放。
在board.h 修改WM8960相关宏配置,使用I2C3。
在audio_codec_common.c init_i2s_playback函数里修改调用i2s_get_default_transfer_config函数。
在hpm_wm8960.c 修改寄存器配置WM8960_IFACE1 FORMAT[1:0]为左对齐,对应i2s_get_default_transfer_config函数设置的transfer->protocol = I2S_PROTOCOL_MSB_JUSTIFIED。
参考drivers/lcdc例程介绍,添加通过修改宏切换5寸或7寸RGB屏。触摸修改部分在hpm_gt9xx.h,切换I2C地址。
相关修改具体搜索程序里附带”//EBF”注释句部分。
如遇到音频播放没有声音,请检查绿色音频输出口或喇叭座子接入是否正常或重启开发板。
lvgl/baremetal
使用野火5寸RGB屏,显示LVGL的官方demo在裸机情况下的运行效果。
可旋转屏幕显示,LVGL的屏幕旋转功能属于软件旋转,对于CPU的开销比较大,在hpm_lvgl.c 修改hpm_lvgl_display_init初始化函数,添加旋转角度的初始化,修改hpm_lvgl_display_flush_cb回调函数,添加显示图片旋转部分,这些由宏LV_DISPLAY_ROTATION_EBF控制
在lv_display.c.h 添加lv_display_rotate_area函数的定义和声明。
参考drivers/lcdc例程介绍,添加通过修改宏切换5寸或7寸RGB屏。触摸修改部分在hpm_gt9xx.h,切换I2C地址。
相关修改具体搜索程序里附带”//EBF”注释句部分。
CONFIG_PANEL_RGB_EBF_5INCH或CONFIG_PANEL_RGB_EBF_7INCH 用于控制使用5寸屏或7寸屏
LV_USE_HPM_PDMA_FLUSH、LV_USE_HPM_PDMA_WAIT_VSYNC、LV_DISPLAY_ROTATION_EBF用于控制开启旋转屏幕
例程默认使用5寸屏,不旋转屏幕。若使用7寸屏和开启旋转屏幕可参考下图,用户按实际需要对应开启宏使用即可
touch_panel
使用野火5寸RGB屏,正确运行后,触摸屏幕,串口终端会打印输出触摸点的坐标,软件自带的串口工具使用方法请参考1.6. 运行调试
参考drivers/lcdc例程介绍,添加通过修改宏切换5寸或7寸RGB屏。触摸修改部分在hpm_gt9xx.h,切换I2C地址。
本例程未进行显示屏幕,只打印触摸坐标,屏幕为初始化后默认情况,可能存在白条或全白屏或全黑屏,均为正常显示,具体看串口打印数据
若串口数据不能打印刷新,可尝试点击断开串口连接,再重打开连接,或复位开发板
更多例程补充中……
3.3. 构建类型简介¶
使用命令或者GUI工具生成工程时有各个Build Type参数。
对应在工程里面为使用了不同的链接脚本。
例如,使用ram类型构建,只读数据与可读写数据都分配在芯片内部ram区域,调试时所有数据都导入在ram后执行,这样导入速度快,前提是程序与数据尺寸小; 使用flash_xip类型构建,只读数据分配在flash区域,可读写数据分配在内部ram区域,调试时相当于将程序导入到了flash存储后执行; 使用flash_sdram_xip类型构建,只读数据分配在flash区域,各种可读写数据根据其特点和需求分配在内部ram或者外部sdram区域。
以上为简略描述,具体内容请文本查看对应icf文件,大部分工程可以在生成后切换icf文件进行构建。