娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

qemu stm32特制版源碼編譯及調試

發布者:Changfeng520最新更新時間:2025-03-11 來源: jianshu關鍵字:qemu  stm32  編譯  調試 手機看文章 掃描二維碼
隨時隨地手機看文章

一,前言

qemu虛擬機還有下文,因為qemu最吸引我的地方就是二次開發,可以模擬各種外設。可以參考我之前的blogqemu虛化原理入門--Apple的學習筆記和Qemu2.8虛擬機源碼分析—Apple的學習筆記我已經掌握了qemu2.8源碼的基礎及2.8源碼的編譯。并且我也使用過了基于stm32開發板的qemu二次開發環境。但是我的目的是能修改qemu源碼,達到更加深入的理解程度,而stm32的qemu二次開發源碼就成為了我現在主要研究的對象。

二:編譯可調試的stm32_qemu二次開發源碼

通過查看版本發現是基于qemu2.8開發的,對比STM32二次開發的源碼和qemu2.8。能發現CONFIG_GNU_MCU_ECLIPSE宏定義打開后,就可以支持STM32開發板。
1.運行命令生成帶調試的makefile
./configure --target-list=gnuarmeclipse-softmmu --enable-debug
出錯提示需要安裝SDL2
sudo apt-get install libsdl2-2.0
sudo apt-get install libsdl2-dev
sudo apt-get install libsdl2-image-dev

2.完成后打開config目錄
/work/qemu-gnuarmeclipse-dev/gnuarmeclipse-softmmu# cat config-target.mak
在文件最后添加-DCONFIG_GNU_MCU_ECLIPSE的預編譯宏定義


# Automatically generated by configure - do not modifyTARGET_ARM=y

TARGET_NAME=gnuarmeclipse

TARGET_BASE_ARCH=arm

TARGET_ABI_DIR=arm

CONFIG_SOFTMMU=y

TARGET_XML_FILES= /work/qemu-gnuarmeclipse-dev/gdb-xml/arm-core.xml /work/qemu-gnuarmeclipse-dev/gdb-xml/arm-cortexm.xml /work/qemu-gnuarmeclipse-dev/gdb-xml/arm-vfp.xml /work/qemu-gnuarmeclipse-dev/gdb-xml/arm-vfp3.xml /work/qemu-gnuarmeclipse-dev/gdb-xml/arm-neon.xml

CONFIG_I386_DIS=y

CONFIG_ARM_DIS=y

LDFLAGS+=QEMU_CFLAGS+=-DCONFIG_GNU_MCU_ECLIPSE

make編譯成功

原版是2.8.0的bin,我由于下載的dev的最新分支,所以版本其實是2.8.5的。


export PATH=/work/qemu-gnuarmeclipse-dev/gnuarmeclipse-softmmu:$PATH

運行qemu-system-gnuarmeclipse -M help能看到開發板信息

image.png

  1. cd /work/STM32F429_Discovery_FreeRTOS_9/Projects/LED

  2. 運行qemu-system-gnuarmeclipse --verbose --verbose --board STM32F429I-Discovery --mcu STM32F429ZI -d unimp,guest_errors --image led.elf --semihosting-config enable


三,通過gdb源碼調試解決運行時的問題

問題1


qemu: qemu_mutex_unlock: Operation not permitted

Board: 'STM32F429I-Discovery' (ST Discovery kit for STM32F429/439 lines).Picture file 'STM32F429I-Discovery.jpg' not found.

首先確認stm32f429i_discovery_board_init_callback函數能正常進入。通過調試發現調用graph.c導致的,通過搜索源碼,我可以先不用LCD顯示,于是添加-nograph可以繼續調試了。

問題2

接著又出現JSON SVD file '(null)' not found.通過調試發現qemu_find_file會傳入參數STM32F429x-qemu.json,就是文件名,但是找不到此文件路徑,而默認的路徑為


#define SHARE_SUFFIX '/share/qemu'#define BUILD_SUFFIX '/pc-bios'

根據調試信息,我把相關qemu-stm32運行過程中需要使用的文件copy到對應的路徑/usr/local/share/qemu后,成功運行。




[New Thread 23930.23938]Thread 1 'qemu-system-gnu' hit Breakpoint 1, qemu_find_file (type=23, 


    name=0x803443a8 'STM32F429x-qemu.json') at vl.c:25392539        if (access(name, R_OK) == 0) {(gdb) c


Continuing.Thread 1 'qemu-system-gnu' hit Breakpoint 2, qemu_find_file (type=23, 


    name=0x803443a8 'STM32F429x-qemu.json') at vl.c:25762576        for (i = 0; i < data_dir_idx; i++) {(gdb) p data_dir[0]$1 = 0x808e9210 '/work/qemu-gnuarmeclipse-dev/pc-bios'(gdb) p data_dir[1]$2 = 0x8035d28b '/usr/local/share/qemu'(gdb) c


Continuing.


image.png


所以我在此路徑添加文件。并且這些文件都是從原版的路徑中copy出來的。(上一行是原版的)原版是ok的,只是原版是二進制不支持調試。
并且這個文件解決后,由于我copy的完整的需要的文件,所以第一個必須要加-nogragh才能調試的問題也成功解決了。

四,備份調試命令

gdbserver localhost:2345 /work/qemu-gnuarmeclipse-dev/gnuarmeclipse-softmmu/qemu-system-gnuarmeclipse --board STM32F429I-Discovery --mcu STM32F429ZI --image led.elf
另外再開一個窗口,輸入gdb然后運行如下命令
target remote localhost:2345


image.png


至此,qemu_stm32二次開發環境已經搭建完成咯~



關鍵字:qemu  stm32  編譯  調試 引用地址:qemu stm32特制版源碼編譯及調試

上一篇:STM32自制GUI小游戲
下一篇:FreeRTOS學習筆記(6)——事件

推薦閱讀最新更新時間:2025-07-04 06:15

stm32后生成編譯文件大小探索之二
之前總結過編譯文件大小的一些研究: https://blog.csdn.net/ZenNaiHeQiao/article/details/83343504 總結起來是這樣的: (1) 單片機:生產的編譯信息中,包含了 code : 代碼信息 RO-data: 只讀信息–》程序中的指令 和常量 RW-data: 被初始化的變量 ZI-data: 無需初始化的變量 我做了這么一個實驗, ①增加一個很大的數組,不初始化或者初始化為0; 它會被分配到ZI-data信息中。 ②增加一個很大的數組,切對其進行初始化, 它會被分配到RW-data信息中 燒錄文件的大小=code + RO-data + RW-data 增加ZI-da
[單片機]
<font color='red'>stm32</font>后生成<font color='red'>編譯</font>文件大小探索之二
STM32的操作過程,寄存器配置與調試過程
很多學習stm32的,為什么學習stm32他也不知道,我們所知道的就是各個論壇討論stm32的很多,而我們很多人之所以學習stm32是很多的淘寶賣家做了大量的圖片文字宣傳,于是我們經不住誘惑就買了板子,然后我們就開始了我們的學習之旅。 在淘寶賣家的眼里有著齊全的入門資料是板子的最大的賣點,于是當我們拿到開發板的時候,我們感覺我們永遠不能和別人說自己熟悉stm32,因為脫離了網絡的資料我們什么都做不了,這是我們最害怕的事情。 今天我就就像在這里記錄下自己一無所有建立stm32工程的過程,是我自己的一個探索過程,同時也是大家互相交流的過程。 第一步:當然是新建一個工程我把它命名為small(這個隨便你,青菜蘿卜各有所愛……)
[單片機]
<font color='red'>STM32</font>的操作過程,寄存器配置與<font color='red'>調試</font>過程
STM32的標準庫編譯成lib庫
以前一直使用STM32的標準庫,需要一步步地將代碼加進去,將編譯選項設置好,然后再編譯整個工程。這個編譯過程是一個相當慢的過程!完全編譯大約需要一支煙的時間。每次建立工程都這么編譯,是一個相當浪費時間和香煙的過程。 于是,我有了將庫編譯成lib文件的想法。本文就是我將STM32F4的標準庫編譯成lib文件并在工程中使用的過程。 適用對象: 熟悉庫,不想再看庫里邊代碼 有穩定的庫,庫文件更新不頻繁 庫文件多,每次編譯時間長 下面是我將STM32F4的標準庫編譯成lib并在工程中使用的過程: 1、建立創建lib的工程 2、將庫文件拷貝到工程目錄: 將庫里邊目錄STM32F4xx_StdPeriph_lib v1.0.
[單片機]
將<font color='red'>STM32</font>的標準庫<font color='red'>編譯</font>成lib庫
STM32之基本調試設置
以 ST-LINK為例 STEP1、選中ST-LINK仿真器 STEP2、選好自己程序對應的仿真時鐘 可能會有一個小問題,那就是如何選自己的時鐘呢,這個可以看 這個文件夾中 使用的是哪個宏定義就對應使用的是哪個時鐘!
[單片機]
<font color='red'>STM32</font>之基本<font color='red'>調試</font>設置
迅為4412開發板實驗_Makefile編譯(上)
本章導讀 在前面入門視頻第十期“搭建編譯環境 uboot_linux_Android”中,只介紹了輸入 Make命令就可以編譯出內核,并沒有介紹它是如何運行的。 在向內核中添加驅動的時候要完成 3 項工作,包括: 1)在 Kconfig 中添加新代碼對應項目的編譯條件,這一部分在實驗 3 已經介紹過; 2)將驅動源碼添加到對應的目錄中,這一步比較好理解,在本章實驗中將給大家演示一下; 3)在目錄 Makefile 中文件中增加針對新代碼的編譯條目,這一部分將在本章節介紹到。 4.1.1 工具 4.1.1.1 硬件工具 1)PC 機 4.1.1.2 軟件工具 1)虛擬機 Vmware 2)Ubuntu12.04.2 3)Ubuntu
[單片機]
迅為4412開發板實驗_Makefile<font color='red'>編譯</font>(上)
ARM—配置交叉編譯環境
方法一:(Android源碼編譯)   1. 進入Android源碼目錄—android frameworks native cmds   2. 創建一個目錄,參考其他目錄寫:Android.mk panda.cpp   3. mm   4. 到該目錄復制到ARM板—Install: out/target/product/vstar/system/bin/i2c   5. 板子運行 方法二·:(ubunt配置交叉編譯環境)   1. Android源碼交叉編譯工具位置:android prebuilts gcc linux-x86 arm   2. 將交叉編譯工具拷貝至ubunt   3. 打開配置文件
[單片機]
Linux的移植與Linux驅動交叉編譯環境搭建
需要工具: 1.Linux內核源碼包,可在http://www.kernel.org/pub/linux/kernel/中去下載自己需要的版本,我們這里我們使用的內核為 linux-3.0.8.tar。 2.需要掛載的芯片源碼,這里使用三星的S5PV210為例,代碼包為rootfs_fs210.tgz的一個壓縮包 3.交叉工具鏈,toolchain-4.5.1-farsight.tar.bz2。 1.我們要移植配置Linux-3.0.8系統,這里我是直接在用戶目錄下使用Samba直接建立個共享文件夾的,在Windows中直接把想要需要的文件放在其中,然后在linux中操作文件。正如下圖所示,將.bz2文件放在s5PV2
[單片機]
Linux的移植與Linux驅動交叉<font color='red'>編譯</font>環境搭建
巧用 STM32CubeIDE 之編譯警告
1.前言 編譯警告對于工程師們來說,是再常見不過的東西了。對于嚴謹的工程師們,任何 warning 都是不會忽視的。 2.巧妙使用 warning 在 STM32CubeIDE 中可以通過warning(甚至 error)的方式來通知工程師,使得一些容易遺漏的配置得到重視。 例如,在釋放參考代碼給客戶時,希望客戶注意到里面的項目名稱和項目版本,那么我們可以在代碼中,通過“#error ”來強調必須要修改的信息,通過“#warning”來備注需要注意的信息。具體代碼如圖 1: 這樣,當客戶編譯工程時,會出現 error 和 warning,見圖 2,只有將“#error”和 “#warning”兩行分別注釋掉,才會分別消除這
[單片機]
巧用 STM32CubeIDE 之<font color='red'>編譯</font>警告
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 启东市| 和顺县| 昌宁县| 黄龙县| 简阳市| 洪洞县| 额敏县| 永吉县| 彭山县| 太谷县| 乐平市| 合山市| 明光市| 株洲县| 凯里市| 电白县| 元谋县| 山丹县| 新邵县| 文成县| 孟津县| 淮阳县| 宜昌市| 横峰县| 蕲春县| 年辖:市辖区| 当阳市| 卢湾区| 双鸭山市| 峡江县| 洛宁县| 灌南县| 碌曲县| 红桥区| 渭源县| 富民县| 武宣县| 扎鲁特旗| 木兰县| 满洲里市| 岐山县|