如何将arduino产生HEX文件 以及如何写入HEX
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将arduino产生HEX文件 以及如何写入HEX相关的知识,希望对你有一定的参考价值。
步骤如下:一: Hex文件的提取
1:在arduino工具的File->preferences中找到preferences.txt文件。
2:用记事本打开preferences.txt,选择hex文件存放的路径,在最后行加入 build.path=d:\\arduino\\MyHexDir,
3:关闭arduino。
4:关闭preferences.txt ,关闭时对话框显示是否保存,选择保存。
Note:1:hex文件存放的路径可以由自己来定。
2:以上操作时不连接arduino硬件。
二:仿真时单片机晶振频率的选择
在arduino软件包的hardware\\arduino\\bootloaders\\atmega路径下有一个makefile的文件,用记事本打开,可以看到相应的arduino板对应用到的bootloader程序和晶振频率。
在用proteus仿真时,选择相对应的单片机,配置晶振。单片机应该与arduino在编译时选择的board上的一致。
三:往其他单片机板上烧录
编译得到的Hex文件往其他的单片机板上烧录时也是一样要选择相对应的单片机和晶振频率。
四:Hex文件的保存
建立保存路径后,每次编译的文件都会存在此路径下,所以程序实验OK后,就应该将相应的Hex文件保存到其他地方,以免在编译别的程序时被覆盖。 参考技术A 有烧写器就用烧写器下载,有bootloader可以用arduino串口助手
OPEN JUMPER™ Serial Assistant
http://www.arduino.cn/thread-1183-1-1.html本回答被提问者和网友采纳
如何使用 FFMPEG 和 C 将音频和视频写入同一个文件?
【中文标题】如何使用 FFMPEG 和 C 将音频和视频写入同一个文件?【英文标题】:How do I write audio and video to the same file using FFMPEG and C? 【发布时间】:2018-06-29 02:08:00 【问题描述】:我在 C 程序中使用 ffmpeg 使用音频文件和视频文件。我正在修改音频和视频数据。在处理下面的代码时,我将这些流中的每一个都写入了自己的文件。如何将两个流写入同一个文件?
#include <math.h>
#include <stdint.h>
#include <stdio.h>
// Video resolution
#define W 1280
#define H 720
// Allocate a buffer to store one video frame
unsigned char video_frame[H][W][3] = 0;
int main()
// Audio pipes
FILE *audio_pipein = popen("ffmpeg -i data/daft-punk.mp3 -f s16le -ac 1 -", "r");
FILE *audio_pipeout = popen("ffmpeg -y -f s16le -ar 44100 -ac 1 -i - out/daft-punk.mp3", "w");
// Video pipes
FILE *video_pipein = popen("ffmpeg -i data/daft-punk.mp4 -f image2pipe -vcodec rawvideo -pix_fmt rgb24 -", "r");
FILE *video_pipeout = popen("ffmpeg -y -f rawvideo -vcodec rawvideo -pix_fmt rgb24 -s 1280x720 -r 25 -i - -f mp4 -q:v 5 -an -vcodec mpeg4 out/daft-punk.mp4", "w");
// Audio vars
int16_t audio_sample;
int audio_count;
int audio_n = 0;
// Video vars
int x = 0;
int y = 0;
int video_count = 0;
// Read, modify, and write one audio_sample and video_frame at a time
while (1)
// Audio
audio_count = fread(&audio_sample, 2, 1, audio_pipein); // read one 2-byte audio_sample
if (audio_count == 1)
++audio_n;
audio_sample = audio_sample * sin(audio_n * 5.0 * 2 * M_PI / 44100.0);
fwrite(&audio_sample, 2, 1, audio_pipeout);
// Video
video_count = fread(video_frame, 1, H * W * 3, video_pipein); // Read a frame from the input pipe into the buffer
if (video_count == H * W * 3) // Only modify and write if frame exists
for (y = 0; y < H; ++y) // Process this frame
for (x = 0; x < W; ++x) // Invert each colour component in every pixel
video_frame[y][x][0] = 255 - video_frame[y][x][0]; // red
video_frame[y][x][1] = 255 - video_frame[y][x][1]; // green
video_frame[y][x][2] = 255 - video_frame[y][x][2]; // blue
fwrite(video_frame, 1, H * W * 3, video_pipeout); // Write this frame to the output pipe
// Break if both complete
if (audio_count != 1 && video_count != H * W * 3)
break;
// Close audio pipes
pclose(audio_pipein);
pclose(audio_pipeout);
// Close video pipes
fflush(video_pipein);
fflush(video_pipeout);
pclose(video_pipein);
pclose(video_pipeout);
return 0;
我从this article获取了此代码的基础。
谢谢!
【问题讨论】:
【参考方案1】:这被称为 muxing(多路复用 = 共享的花哨词)。
在这里(下面的链接),您会发现易于遵循的示例:打开和写入混合在单个流/文件中的流。您还会注意到该示例使用av_interleaved_write_frame
而不是fwrite
。特别检查remuxing.c
。
示例:https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples
API 参考:https://www.ffmpeg.org/doxygen/trunk/index.html
【讨论】:
谢谢,我通读了它,这似乎是正确的道路。我在运行示例代码时遇到问题,并在此处发布了一个问题 ***.com/questions/51139736/…以上是关于如何将arduino产生HEX文件 以及如何写入HEX的主要内容,如果未能解决你的问题,请参考以下文章
如何将 .hex 文件反编译为 Arduino 的 C++?