精华内容
下载资源
问答
  • openocd编译安装

    2021-01-24 19:05:49
    openocd编译 1. 简介 openocd是open on chip debugger的简称,一般想脱离windows系统的一些调试工具进行片上调试的话,都会选择用这个。 在这里只记录本人在ubuntu20.04上的编译安装的过程,以便日后查询。 2. ...

    openocd编译

    1. 简介

    openocd是open on chip debugger的简称,一般想脱离windows系统的一些调试工具进行片上调试的话,都会选择用这个。

    在这里只记录本人在ubuntu20.04上的编译安装的过程,以便日后查询。

    2. 下载

    可以在openocd官网下载源码包:https://sourceforge.net/projects/openocd/

    3. 安装依赖

    因为想尽量编一个较全的版本,所以需要安装一些调试协议的依赖库:

    sudo apt install libusb-1.0-0-dev

    sudo apt install libhidapi-dev

    sudo apt install libftdi-dev

    4. 编译安装

    解压源码压缩包,并进入源码目录。

    ./configure --prefix=/home/neo/openocd --enable-cmsis-dap --enable-cmsis-dap-v2 --enable-openjtag

    make

    make install

    展开全文
  • windows 上用qtcreator + gcc +openocd 编译调试stm32
  • qtcreator + Keil MDK armcc +openocd 编译 调试stm32 Keil MDK 的编辑功能太弱了 本人又习惯了qtcreator的小巧和编辑方便是 经过折腾其实可以利用qtcreator结合Keil MDK来编辑 编译 下载 调试 STM32的工程 方法...

    qtcreator + Keil MDK armcc +openocd 编译 调试stm32

    Keil MDK 的编辑功能太弱了 本人又习惯了qtcreator的小巧和编辑方便是
    经过折腾其实可以利用qtcreator结合Keil MDK来编辑 编译 下载 调试 STM32的工程 方法如下

    准备的软件:
    1.Qtcreator
    2. gcc-arm-none-eabi (新版的可能有bug )
    3. openocd
    4. python-2.7(用于qtceator 的gdb python版本调试器 用新版本 )

    安装好上面的软件
    配置好openocd python的环境变量(具体百度)

    打开qtceator , 菜单->帮助->关于插件 找到Bare Metal 插件 勾先该插件
    在这里插入图片描述关闭后 重新启动qtcreator

    菜单->工具->选项 找到 设备选项 在Bare Metal页上 add ->OpenOCD 添加一个类型
    在这里插入图片描述名字可根据Stm32 cpu类型和下载器名命

    Startup mode 选择为 TCP/IP mode
    Host 填localhost 端口为3333
    Executable file 填安装的openocd程序文件路径

    Addition argument 填 -f interface/cmsis-dap.cfg -f target/stm32f4x.cfg
    根据下载器及实际的Stm32 芯片填写 这些配置文件是在openocd安装的位置

    Init command 填

    set remote hardware-breakpoint-limit 6
    set remote hardware-watchpoint-limit 4
    monitor reset halt
    monitor report_flash_progress on
    monitor program "%{CurrentRun:Executable:FilePath}" reset
    monitor poll on
    monitor reset halt
    b main
    

    %{CurrentRun:Executable:FilePath}就当前qtcreator的变量 表示要下载的文件路径 在项目/运行/ 中填写的被调试的elf文件
    b main 表示在main函数上下一个断点

    Reset command 填

    monitor reset halt
    b main
    

    点击Apply应用设置

    然后到 设备页 新建一个 Bare Matel设备 选择刚刚设置好的openocd类型
    在这里插入图片描述点击左则的 在这里插入图片描述Kits 进到套件设置

    在编译器选项 新建 c 和 c++编译器 选择安装好的arm gcc 和 g++
    在这里插入图片描述点击Apply

    转到debugger 页 新增一个调试器 选 arm-gdb-py python版本

    在这里插入图片描述点Apply

    根据上面的设置 在构建套件页 增加一个套件
    在这里插入图片描述点Ok
    Qtcreator 设置完毕

    然后新建一个工程 选Non-Qt Project Plain C Application模版
    项目的路径跟Keil工程相同 (.qbs 与.uvprojx相同路径) 不要有空格和中文
    Build system选QbsBuild system选Qbs
    在这里插入图片描述构建位置填为 .\Qbs
    Kits选建好的Stm32构建套件

    Main.c文件 main()改成没有参数输入的

    双击编辑 *.qbs文件 输入如下代码

    import qbs
    import qbs.FileInfo
    import qbs.Process
    
    Project {
        Product {
            name: project.name
            type: "compileByARMCC"
    
            Depends { name: "cpp" }     //refer "cpp" Module
    // cpp.defines跟Keil的工程设置成一样  
    //cpp.includePaths 是为了编辑时不会报错 不要也可以       
    cpp.defines:["STM32F40_41xxx","STM32F407xx=1","_RTE_=1","__GCC=1","USE_STDPERIPH_DRIVER"]
            cpp.includePaths:
            [
                "./CMSIS/Include",
                "./CMSIS/Device/ST/STM32F4xx/Include",
                "./fwlib/inc",
                "./include"
            ]
    
            files: [
                "driver/led.c",
                "driver/stm32f4xx_it.c",
                "driver/system_stm32f4xx.c",
                "fwlib/inc/stm32f4xx_gpio.h",
                "fwlib/inc/stm32f4xx_rcc.h",
                "fwlib/src/stm32f4xx_gpio.c",
                "fwlib/src/stm32f4xx_rcc.c",
                "include/led.h",
                "include/main.h",
                "include/stm32f4xx.h",
                "include/stm32f4xx_conf.h",
                "include/stm32f4xx_it.h",
                "include/system_stm32f4xx.h",
                "main/main.c",
                "startup_stm32f40_41xxx.s",
            ]
            Group {
                files: [
                    "Target 1.BAT",
                ]
    // Target 1.BAT 这个文档是Keil工程生成的 放在本qbs工程目录下 生成方法见下文
                fileTags: "compileBat"
            }
    
            Rule{
                inputs: "compileBat"
                Artifact{
                    fileTags: "compileByARMCC"
                }
    
                prepare:{
                    var callCmd=new Command("cmd");  //
                    var callCmdArgs=["/c",input.filePath];
                    callCmd.arguments=callCmdArgs;
                    callCmd.workingDirectory=project.sourceDirectory;
                    callCmd.description="calling copile bat file..."
                    return [callCmd];
                }
    
            }
        }
    }
    

    构建好的qbs工程结构如图
    在这里插入图片描述
    Qbs工程配置好后 就选 on RemoteOpenOCD的构建目标
    在这里插入图片描述
    设置Keil MDK的工程选项

    打开建立好的Keil MDK stm32工程
    菜单->Project->Options for target…

    在打开的选项对话框中 选中output页面 勾选下面的选项 以生成编译批处理文件
    Create Executable Create Batch File
    Debug Information
    Create Hex file
    Browse Information
    在这里插入图片描述点击ok 后 在Keil中重新编译一下工程 就会在工程的根目录下生成一个 Target 1.bat(跟keil的工程名相同) 的批处理文件,这个是用于上面qbs文件的代码中实现编译的

    再次切换到qtcreator
    右键qbs的工程图标 选择重新构建 如无错误如下所示
    在这里插入图片描述然后就点项目
    设置运行配置为custom on remoteOpenocd
    设置executable 为生成的axf文件
    在这里插入图片描述连接好下载器
    点击调试运行就会进行下载并运行
    中断在main函数入口了
    在这里插入图片描述存在的问题:
    有时中断会断不下来 可能是gdb-py或者是openocd的bug吧,更换版本可能好点
    有时调试会假死 在进程管理器中关掉openocd各gdb-py的假死进程 重连下载器才可以再进行调试
    还有就是点连续运行后再按暂停是停不下来的
    Restart debuggin 一按就会假死
    单步调试较慢 步过一些时间较长的指命会假死 最好用先下好断点-直接运行到断点-删除断点-单步/步过 的方式进行调试

    在qtcreator中编辑代码后,必须右键qbs工程图标 选择重新编译 才会生成新的代码对应的axf文件,
    而qtcreator左下角的构建按钮不起作用。

    如果要在工程中增加一个新的代码文档(c 或 cpp),必须要在Keil中先增加该文档并重新编译以生成新的Target1.bat文件,才可以qtcreator进行编译、调试。

    展开全文
  • qtcreator + gcc +openocd 编译调试stm32 准备的软件: 1.Qtcreator 2. gcc-arm-none-eabi (新版的可能有bug ) 3. openocd 4. python-2.7(用于qtceator 的gdb python版本调试器 用新版本) 安装好上面的软件 ...

    qtcreator + gcc +openocd 编译调试stm32

    准备的软件:
    1.Qtcreator
    2. gcc-arm-none-eabi (新版的可能有bug )
    3. openocd
    4. python-2.7(用于qtceator 的gdb python版本调试器 用新版本)

    安装好上面的软件
    配置好openocd python的环境变量

    打开qtceator , 菜单->帮助->关于插件 找到Bare Metal 插件 勾先该插件
    在这里插入图片描述
    关闭后 重新启动qtcreator

    菜单->工具->选项 找到 设备选项 在Bare Metal页上 add ->OpenOCD 添加一个类型
    在这里插入图片描述
    名字可根据Stm32 cpu类型和下载器名命

    Startup mode 选择为 TCP/IP mode
    Host 填localhost 端口为3333
    Executable file 填安装的openocd程序文件路径

    Addition argument 填 -f interface/cmsis-dap.cfg -f target/stm32f4x.cfg
    根据下载器及实际的Stm32 芯片填写 这些配置文件是在openocd安装的位置

    Init command 填

    set remote hardware-breakpoint-limit 6
    set remote hardware-watchpoint-limit 4
    monitor reset halt
    monitor report_flash_progress on
    monitor program "%{CurrentRun:Executable:FilePath}" reset
    monitor poll on
    monitor reset halt
    b main
    

    %{CurrentRun:Executable:FilePath}就当前qtcreator的变量 表示要下载的文件路径 在项目/运行/ 中填写的被调试的elf文件
    b main 表示在main函数上下一个断点

    Reset command 填

    monitor reset halt
    b main
    

    点击Apply应用设置

    然后到 设备页 新建一个 Bare Matel设备 选择刚刚设置好的openocd类型
    在这里插入图片描述

    点击apply 配置 Bare Metal设置完成

    点击左则的 在这里插入图片描述 Kits 进到套件设置

    在编译器选项 新建 c 和 c++编译器 选择安装好的arm gcc 和 g++
    在这里插入图片描述
    点击Apply

    转到debugger 页 新增一个调试器 选 arm-gdb-py python版本
    在这里插入图片描述
    点Apply

    根据上面的设置 在构建套件页 增加一个套件
    在这里插入图片描述
    点Ok
    Qtcreator 设置完毕

    然后新建一个工程 选Non-Qt Project Plain C Application模版
    项目的路径不要有空格和中文

    Build system选Qbs
    在这里插入图片描述

    构建位置填为 .\Qbs
    Kits选建好的Stm32构建套件
    在这里插入图片描述
    Main.c文件 main()改成没有参数输入的

    双击编辑 *.qbs文件

    import qbs
    import qbs.Environment
    import qbs.FileInfo
    import qbs.Probes
    import qbs.TextFile
    import qbs.Process    //导入的一样qbs提供的库
    //import qbs.ModUtils
    //import qbs.Utilities
    //import qbs.WindowsUtils
    
    Project {
        minimumQbsVersion: "1.7.1"
        Product {
            name:project.name
    // type: 类型是指这个Product 最终需要生成的Artifact 的Filetags 
    //根据这里的设置来一步步向上查找顶Rule 再反向生成需要的文件
    //如application= elf文件  - obj – c c++ asm
            type: [
                "flash",		
                "obj_asm_out",
    //            "application",
            ]     // the final resualt Artifact filetags this produt want
            Depends { name: "cpp" }     //refer "cpp" Module 这里指引用Qbs
    //的内建Module 常用”cpp”用于 c c++项目的编译
    
            property string openocdDir:""
            property string openocdInterfacePath:"\""+sourceDirectory+"/cmsis-dap-swd.cfg"+"\""   //"./cmsis-dap-swd.cfg" "interface/cmsis-dap.cfg" "interface/stlink.cfg"
    // openocdInterfacePath 用于指定openocd接口配置 文件内容见下文所示
    
            property string openocdCpuCfgPath:"target/stm32f4x.cfg"   //"target/stm32f1x.cfg" 指定stm32 cpu配置文件
            property string openocdEraseCpuSector:"" //"-c \"flash erase_sector 0 0 11\""   // flash erase_sector bank_num first last
    //设置是否下载前擦除
            property string toolChainPath:FileInfo.path(cpp.compilerPath)
            property string elfSizeExePath:toolChainPath+"/arm-none-eabi-size.exe"
            property string objCopyExePath:toolChainPath+"/arm-none-eabi-objcopy.exe"
            property string objDumpExePath:toolChainPath+"/arm-none-eabi-objdump.exe"
    //这里获取配置好的gnu-arm工具链路径
            files: [
                "driver/led.c",
                "driver/stm32f4xx_it.c",
                "driver/system_stm32f4xx.c",
                "fwlib/inc/stm32f4xx_conf.h",
                "fwlib/inc/stm32f4xx_gpio.h",
                "fwlib/inc/stm32f4xx_rcc.h",
                "fwlib/src/misc.c",
                "fwlib/src/stm32f4xx_gpio.c",
                "fwlib/src/stm32f4xx_rcc.c",
                "include/led.h",
                "include/main.h",
                "include/stm32f4xx.h",
                "include/stm32f4xx_conf.h",
                "include/stm32f4xx_it.h",
                "include/system_stm32f4xx.h",
                "main/main.c",
            ]
    // files:是指项目引入的源文件
            Group {     // Properties for the produced executable
                fileTagsFilter: ["obj","objc","application","flash","obj_asm_out"] //,"application","obj","objc","asm","asm_cpp"
                qbs.install: true
                //            qbs.installDir: "bin"
            }
    //Group 指定一些文件 相同的属性 如上是指定的fileTager文件的
    //qbs.install属性设置为true  即这些文件安装到install-root
            cpp.cLanguageVersion:"c11" //c语言指定的版本
            cpp.includePaths:
            [
                "./CMSIS/Include",
                "./CMSIS/Device/ST/STM32F4xx/Include",
                "./fwlib/inc",
                "./include",
    //            toolChainPath+"/../arm-none-eabi/include",
    //            toolChainPath+"/../arm-none-eabi/include/c++/8.2.1",
    //            toolChainPath+"/../arm-none-eabi/include/c++/8.2.1/tr1",
    //            toolChainPath+"/../arm-none-eabi/include/c++/8.2.1/arm-none-eabi",
    //            toolChainPath+"/../lib/gcc/arm-none-eabi/8.2.1/include"
            ]
    //编译和编辑中用到的头文件引用路径
    //        cpp.compilerIncludePaths:base.concat(cpp.includePaths)
    
            cpp.defines:["STM32F40_41xxx","STM32F407xx=1","_RTE_=1","__GCC=1","USE_STDPERIPH_DRIVER"]
    //设置一些项目中用到的编译器预定义宏
            Group {
                files: ["./gcc/startup_stm32f40_41xxx.s"]
                fileTags: "asm"
                cpp.assemblerFlags:[
                    "-mcpu=cortex-m4","-mthumb","-gdwarf-2","-mthumb-interwork",
                    "-g",//"-Wall",
                ]
            }
    //设置汇编文件 gnu-arm-as编译器的编译参数
    //这里的汇编文件不是keil格式的 而是gcc格式的  可以在stm32的标准库中
    //找到
    
            cpp.positionIndependentCode: false
            cpp.enableExceptions: false
            cpp.debugInformation: true
            cpp.executableSuffix: ".elf"
    
            cpp.driverFlags:[
                "-mcpu=cortex-m4","-mthumb","-mthumb-interwork",
                "-mfloat-abi=hard",  //softfp
                "-mfpu=fpv4-sp-d16"
            ]
    // cpp.driverFlags 指的是编译和链接时直接传给编译器的参数 
            cpp.commonCompilerFlags:[
    //            "-fno-strict-aliasing","-g3",
                "-g","-Wall","-O0",
                "-fdata-sections",
                "-ffunction-sections",
                "-mapcs-frame","-mapcs-stack-check",
    //            "-flto","-fno-inline","-std=c99", "-flto"
            ]
    //c c++编译时的一些公共参数
    //        cpp.driverLinkerFlags:["-mcpu=cortex-m4","-mthumb","-mthumb-interwork"]
            cpp.linkerFlags:
            [
                "-T"+path+"/STM32F417IG_FLASH.ld",
    //            "-specs=nano.specs","-static","-specs=nosys.specs",
    //            "-nostartfiles",
    //            "?u,_printf_float",//"-cref","-u,Reset_Handler",
    //            "--start-group",
                "-lnosys",
                "-lgcc",
                "-lc",
    //            "-lstdc++",
                "-lm",
    //            "--end-group",
                "-Map=Project.map",
                "--gc-sections",
                "--defsym=malloc_getpagesize_P=0x80",
            ]
    //链接成elf 文件的linker参数 STM32F417IG_FLASH.ld可在Stm32标准库中找到   并放在本工程同级目录 
    
    //        Properties
    //        {
    //            condition: qbs.buildVariant === "debug"
    //            cpp.defines: outer.concat(["DEBUG=1"])
    //            cpp.debugInformation: true
    //            cpp.optimization: "none"
    //        }
    
    //        Properties
    //        {
    //            condition: qbs.buildVariant === "release"
    //            cpp.debugInformation: false
    //            cpp.optimization: "small"
    //        }
    
    //这里自定义一个生成规则  用于把生成过程中的”obj” “objc” Artifact 输//出作为输入 再生成汇编文件   new Command()是运行的命令
            Rule
            {
                inputs: ["obj","objc"]
                Artifact
                {
                    filePath: input.baseName+".s"
                    fileTags: "obj_asm_out"
                }
                prepare:
                {
                    var objDumpPath = product.objDumpExePath;
                    var argsObjDump = ["-S",input.filePath];  //,output.filePath
                    var cmdObjDump = new Command(objDumpPath, argsObjDump);
                    cmdObjDump.stdoutFilePath=output.filePath;
                    cmdObjDump.description = input.fileName+" convert to asm...";
                    return [cmdObjDump];
                }
            }
    
    
    //这个Rule是用来将"application" Artifact输出文件 即elf文件转换为hex
    //文件用于其它下载(如串口)  打印elf文件的大小信息
    //再生成一个openocd的下载 bat文件 (这个command可以不要)
            Rule
            {
                inputs: ["application"]   //application
                Artifact
                {
                    filePath: input.completeBaseName+".hex"//qbs.installRoot + "output1" + ".hex"  //installRoot install
                    fileTags: "flash"
                }
                prepare:
                {
                    var sizePath = product.elfSizeExePath;
                    var argsSize = [input.filePath];
                    var objcopyPath = product.objCopyExePath;
                    var argsObjcopy = [input.filePath,"-Oihex",output.filePath];
    
                    var openocdDir=product.openocdDir;
                    var configInterfacePath = product.openocdInterfacePath;//"interface/stlink.cfg";
                    var configStm32CfgPath = product.openocdCpuCfgPath;"target/stm32f4x.cfg";
    
                    var argsFlashing =
                            " -f " +  configInterfacePath+
                            " -f " +  configStm32CfgPath+
                            " -c " +  "init" +
                            " -c " +  "halt" +
                            product.openocdEraseCpuSector +//"\"flash erase_sector 0 0 127\""
    //                        " -c " +  "reset" +
    //                        " -c " +  "halt" +
                            " -c " +  "\"flash write_image erase "  + "\\\"" + input.filePath + "\\\"" +"\"" +
                            " -c " +  "\"verify_image " + "\\\""+ input.filePath +"\\\"" +"\""+
    //                        " -c " +  "reset"+
    //                        " -c " +  "halt"+
                            " -c " +  "exit";
    
    
                    var cmdSize = new Command(sizePath, argsSize);
                    var cmdObjcopy = new Command(objcopyPath, argsObjcopy);
                    var cmdWriteFile=new JavaScriptCommand();
                    cmdWriteFile.maxExitCode=1000;
                    cmdWriteFile.writedata=
                            openocdDir+"openocd.exe " +
                            " -f "+ configInterfacePath
                            +" -f " + configStm32CfgPath;
    
                    cmdWriteFile.writedata1=openocdDir+"openocd.exe " + argsFlashing;
                    cmdWriteFile.askyesorno=
                            "@echo OFF\n"+
                            "set /a yes=0 \n"+
                            "set /a no=0 \n"+
                            "set /p YESORNO=\"Are you want to go on?(Y/N)\"\n"+
                            "if not defined YESORNO set YESORNO=y\n"+
                            "if %YESORNO%==y set /a yes=1 \n"+
                            "if %YESORNO%==n set /a no=1 \n"+
                            "if %YESORNO%==Y set /a yes=1 \n"+
                            "if %YESORNO%==N set /a no=1 \n"+
                            "set /a x=yes \"|\" no \n"+
                            "if %x% equ 0 GOTO TEND\n"+
                            "if %no% equ 1 GOTO TEND\n"+
                            "if %yes% equ 1 GOTO ALIVE\n"+
                            ":ALIVE\n"+
                            "@echo ON\n";
    
                    cmdWriteFile.sourceDir=project.sourceDirectory;
                    cmdWriteFile.downloadBat=project.sourceDirectory+"/openocdDownload.bat";
                    cmdWriteFile.elfFile=input.filePath;
                    cmdWriteFile.sourceCode=function()
                    {
                        var file=TextFile(sourceDir+"/openocd.bat",TextFile.WriteOnly);
                        file.truncate();
                        file.writeLine(writedata);
                        file.writeLine("pause");
                        file.close();
    
                        var file1=TextFile(downloadBat,TextFile.WriteOnly);
                        file1.truncate();
                        file1.writeLine("@echo prepare to download elf file: ");
                        file1.writeLine("@echo "+elfFile);
                        file1.write(askyesorno);
                        file1.writeLine(writedata1);
                        file1.writeLine("pause");
                        file1.writeLine(":TEND");
                        file1.writeLine("exit");
                        file1.close();
    
                        var process=new Process();
                        process.exec("cmd",["/c","start "+downloadBat]);  //+ "C:/Windows/System32/cmd.exe" %COMSPEC% qbs.shellPath
                    }
    
                    cmdSize.description = "Size of sections:";
                    cmdSize.highlight = "linker";
                    cmdObjcopy.description = "convert to bin...";
                    cmdObjcopy.highlight = "linker";
                    cmdWriteFile.description = "generate openocd download bat ...";
                    return [cmdSize,cmdObjcopy,cmdWriteFile];
                }
            }
    
        }
    }
    

    构建好的qbs工程结构如图
    在这里插入图片描述
    startup_stm32f40_41xxx.s汇编启动文件 不是keil格式的 而是gcc格式的 可以在stm32的标准库中找到 上面的cmsis-dap接口配置文件cmsis-dap-swd.cfg 放在项目的同级目录 内容如下:

    interface cmsis-dap
    transport select swd  
    adapter_khz 2000
    

    其它接口要百度

    Qbs工程配置好后 就选 on RemoteOpenOCD的构建目标

    点构建 如无错误如下所示

    然后就点项目 设置运行配置为custom on remoteOpenocd 设置executable 为生成的elf文件

    连接好下载器 点击调试运行就会进行下载并运行断点在main函数入口了

    有时中断会断不下来 可能是gdb-py或者是openocd的bug吧,更换版本可能好点
    有时调试会假死 在进程管理器中关掉openocd各gdb-py的假死进程 重连下载器才可以再进行调试

    还有就是点连续运行后再按暂停是停不下来的
    Restart debuggin 一按就会假死
    单步调试较慢 步过一些时间较长的指命会假死

    最好用 先下好断点-直接运行到断点-删除断点-单步/步过 的方式进行调试

    展开全文
  • 折腾rp2040的时候要用下openocd, 官方的不能用,于是自己想要编译一个, 搞了cygwin和mingw的编译环境, 编译未果, 后面还是借用了官方的编译方式, 具体如下 官方方法如下: ...

    折腾rp2040的时候要用下openocd, 官方的不能用,于是自己想要编译一个, 搞了cygwin和mingw的编译环境, 编译未果, 后面还是借用了官方的编译方式, 具体如下

    官方方法如下:
    https://github.com/xpack-dev-tools/openocd-xpack/blob/xpack/README-BUILD.md

    过程:

    1. 环境准备,windows 机器上需要配置docker和wsl
    2. 下载编译脚本, 这里可以checkout 不同版本的openocd-xpack来获取响应的配套编译环境
    rm -rf ~/Downloads/openocd-xpack.git; \
    git clone \
      --recurse-submodules \
      https://github.com/xpack-dev-tools/openocd-xpack.git \
      ~/Downloads/openocd-xpack.git
    
    1. 编译编译需要的docker image
     bash ~/Downloads/openocd-xpack.git/scripts/build.sh preload-images
    
    1. 替换编译rp2040需要的仓库地址
    diff --git a/scripts/defs-source.sh b/scripts/defs-source.sh
    index 2487d58..f19131e 100644
    --- a/scripts/defs-source.sh
    +++ b/scripts/defs-source.sh
    @@ -42,6 +42,6 @@ COMMON_APPS_FUNCTIONS_SCRIPT_NAME=${COMMON_APPS_FUNCTIONS_SCRIPT_NAME:-"common-a
     # than the xPack Project repo then uncomment the following defines and tweak
     # as needed.
    
    -# OPENOCD_GIT_URL=git://git.code.sf.net/p/openocd/code
    -# OPENOCD_GIT_BRANCH=master
    -# OPENOCD_GIT_COMMIT=HEAD
    +OPENOCD_GIT_URL=https://github.com/raspberrypi/openocd
    +OPENOCD_GIT_BRANCH=rp2040
    +#OPENOCD_GIT_COMMIT=HEAD
    
    1. 编译需要的windows下的程序
    bash ~/Downloads/openocd-xpack.git/scripts/build.sh --win64 --win32
    

    编译结束后编译的结果会出现在

     ~/Work/openocd-*/deploy
    

    copy 出来就能用了

    其他參考資料:
    https://shawnhymel.com/2168/how-to-build-openocd-and-picotool-for-the-raspberry-pi-pico-on-windows/

    展开全文
  • openOCD编译出错修正

    2013-07-08 16:09:47
    make[2]: Entering directory `/home/elta/work/openOCD/build/doc' restore=: && backupdir=".am$$" && \    am__cwd=`pwd` && CDPATH="${ZSH_VERSION+.}:" && cd ../../doc && \    rm -rf $backupdir &
  • 1.下载最新的openocd的代码  下载代码主要有两种方式:  a.从openocd的官网(http://openocd.berlios.de/web/)上下载官方发布的最新版本(0.5.0),下载网址(http://developer.berlios.de/p
  • Ubuntu环境下openocd编译安装及bootloader下载 编译安装openocd 进入openocd-0.10.0 目录 (cd XX/bootloader/openocd-0.10.0) 配置文件(./configure --enable-stlink) 如果提示ST-Link JTAG ...
  • Windows下编译OpenOCD

    2020-10-23 10:31:14
    首先需要安装Cygwin 在这里下载Cygwin安装包 完成后打开exe文件进行安装。 选择install from Internet。 然后指定目录。...编译OpenOCD 在想要的工作目录下运行 git clone https://github.com/ntfrea
  • 如何编译Windows下的OpenOCD

    千次阅读 2018-06-25 11:04:27
    如何编译Windows下的OpenOCD本文摘录于:https://zhidao.baidu.com/question/1047512972598364779.html 这里只是作为备份,绝无抄袭之意!【OpenOCD介绍】 OpenOCD为嵌入式目标系统提供一个调试,在线编程和JTAG...
  • 先说一下我的软硬件环境:硬件:一块评估板Atmel SAMD21 xplained pro 没有普通的 Jtag 口, 它提供了 EDBG USB 口, 支持 CMSIS-DAP, OpenOCD 又支持 CMSIS-DAP 接口.开发软件:VS 2013+VisualGDB+OpenOCD, VisualGDB ...
  • STM32-Linux下开发环境包 编译链:gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2 openocdopenocd-0.10.0.tar.bz2 openocd-0.10.0.zip 教程:https://blog.csdn.net/p1279030826/article/details/106218696
  • 终于搞定ubuntu编译和烧写stm32 openocd

    千次阅读 2019-09-20 11:41:59
    首先编译固件库的启动文件,选错arm下的文件,报错: startup_stm32f10x_hd.s: Error: bad instruction 编译头文件指令: arm-none-eabi-gcc -c -mthumb -mcpu=cortex-m3 -g -Wa,--warn -o startup_stm32f10x_...
  • ubuntu下编译安装openocd配合JLINK调试

    千次阅读 2013-12-04 14:18:10
    openocd 0.7 jlink v8 官网 http://openocd.sourceforge.net/ 这里下载 0.7.0 版 http://sourceforge.net/projects/openocd/files/openocd/0.7.0/ libusb本来已经安装了,但是需要将开发包也安装来,否则提示错误...
  • openocd 0.6.1 jlink v8 官网 http://openocd.sourceforge.net/ 这里下载 0.6.1 版 http://sourceforge.net/projects/openocd/files/openocd/0.6.1/ libusb本来已经安装了,但是需要将开发包也安装来,...
  • The following post is a guide for compiling and installing a fresh copy of openOCD. This guide will go through the necessary steps to configure openOCD to support CMSIS-DAP devices. In order to do thi...
  • 1.openocd ...1.2 编译openocd [问题] 无法找到libftdi的lib.libftdi是在/usr/local/lib下的,ftdi.h是在/usr/local/include下的.不知道为什么openocd就是不去找. 1.添加到./configure中去, CC...
  • git clone git://git.code.sf.net/p/openocd/code openocd 下载完整的OpenOCD的文件夹。进入到OpenOCD的目录下,开始安装。 接着,OpenOCD适用于微处理器的debug和烧写,需要下载相关库 sud
  • 之前使用openocd软件连同busblaster B3C硬件对hg255d路由器进行JTAG调试时,一直只能下载网络上编译好的openocd windows版软件,如果自己需要对openocd进一步了解和学习,不可避免需要从源码进行编译编译linux版的...
  • OpenOCD安装

    千次阅读 2017-01-25 17:40:42
    本文在ubuntu下安装一个全功能的OpenOCD组件,用来支持多种不同的Jtag适配器。 1.下载代码: git clone git://git.code.sf.net/p/openocd/code openocd Bootstrap the build envoronment  ./bootstrap 3.安装...
  • Linux下使用VSCode开发STM32开发工具安装Visual Studio Code与插件STM32CubeMXOpenOCD烧录工具gcc-arm-none-eabi编译器STM32CubeMX生成工程OpenOCD烧录json脚本实现一键编译烧录调试 开发工具安装 Visual Studio ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,080
精华内容 432
关键字:

openocd编译