STM32F103制作FlashDriver
Posted 赞哥哥s
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F103制作FlashDriver相关的知识,希望对你有一定的参考价值。
文章目录
前言
在汽车行业控制器软件刷新流程中,一般会将Flash驱动单独进行刷写,目的是防止程序中一直存在Flash驱动的话,可能会造成对APP软件的异常操作,导致应用程序无法执行。本文介绍STM32F103使用KEIL生成指定FlashDriver地址的hex文件,然后使用HexView命令行提取FlashDriver及Remapping flash地址到ram地址
本文参考github,SummerFalls大神的UDS_S32K144_FlashDriver
芯片内存定义
STM32F103RCT6,flash大小256k,一个扇区2k,SRAM:48KB;
实现过程
FlashDriver生成
段定义
由于我无法直接在Keil中导出指定ram地址的hex文件,所以采用先定义指定flash地址的flash驱动,后面通过hexview实现地址重映射
keil中的内存区域定义通过分散加载文件(.sct格式)实现,如下所示
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x08000000 0x00020000 ; load region size_region\\
ER_IROM1 0x08000000 0x00020000 ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
.ANY (+XO)
RW_IRAM1 0x20000800 0x0000C000 ; RW data
.ANY (+RW +ZI)
LR_IROM2 0x08020000 0x00020000
RW_IROM_flashdrvoffset 0x08020000 0x00000008; load address = execution address
*(.NVM_Driver_Section_offset)
RW_IROM_flashdrv 0x08020008 0x000007F8; load address = execution address
*(.NVM_Driver_Section)
此处设置了两个段,NVM_Driver_Section_offset用来设置函数偏移地址,NVM_Driver_Section用来设置函数地址
增加段的宏定义
#define NVM_DRIVER_SECTION __attribute__((section (".NVM_Driver_Section")))
#define NVM_DRIVER_SECTION_OFFSET __attribute__((section (".NVM_Driver_Section_offset")))
函数地址偏移量定义
__attribute__((used)) NVM_DRIVER_SECTION_OFFSET static const tFlashDriverAPIInfo gs_FlashDriverAPI =
(tpfFLASH_DRV_EraseSector) CAL_OFFSET(FLASH_ErasePage),
(tpfFLASH_DRV_Program) CAL_OFFSET(FLASH_ProgramWord),
;
分两个段,保证地址偏移量在生成的hex文件的前面
此处使用库函数中的FLASH_ErasePage和FLASH_ProgramWord函数。由于提取的函数最终是以数组的形式存在,以函数指针的方式进行调用,所以函数中不能存在全局变量或调用其他的函数。
需要将原库函数中的函数的调用函数使用宏定义的方式进行定义,使用do while语法实现。
擦除函数
__attribute__((used)) NVM_DRIVER_SECTION FLASH_Status FLASH_ErasePage(uint32_t Page_Address)
FLASH_Status status = FLASH_COMPLETE;
FLASH_WaitForLastOperation(EraseTimeout,&status);
if(status == FLASH_COMPLETE)
/* if the previous operation is completed, proceed to erase the page */
FLASH->CR|= CR_PER_Set;
FLASH->AR = Page_Address;
FLASH->CR|= CR_STRT_Set;
/* Wait for last operation to be completed */
FLASH_WaitForLastOperation(EraseTimeout,&status);
/* Disable the PER Bit */
FLASH->CR &= CR_PER_Reset;
/* Return the Erase Status */
return status;
上面的FLASH_WaitForLastOperation函数使用宏定义进行展开
#define FLASH_WaitForLastOperation(Timeout,pstatus)\\
do\\
uint32_t TimeoutCnt = Timeout;\\
*pstatus = FLASH_COMPLETE;\\
FLASH_GetBank1Status(pstatus);\\
while((*pstatus == FLASH_BUSY) && (TimeoutCnt != 0x00))\\
\\
FLASH_GetBank1Status(pstatus);\\
TimeoutCnt--;\\
\\
if(TimeoutCnt == 0x00 )\\
\\
*pstatus = FLASH_TIMEOUT;\\
\\
while(0)
里面又用到一个FLASH_GetBank1Status函数
#define FLASH_GetBank1Status(pFLASH_Status)\\
do\\
*pFLASH_Status = FLASH_COMPLETE;\\
if((FLASH->SR & FLASH_FLAG_BANK1_BSY) == FLASH_FLAG_BSY)\\
\\
*pFLASH_Status = FLASH_BUSY;\\
\\
else\\
\\
if((FLASH->SR & FLASH_FLAG_BANK1_PGERR) != 0)\\
\\
*pFLASH_Status = FLASH_ERROR_PG;\\
\\
else\\
\\
if((FLASH->SR & FLASH_FLAG_BANK1_WRPRTERR) != 0 )\\
\\
*pFLASH_Status = FLASH_ERROR_WRP;\\
\\
else\\
\\
*pFLASH_Status = FLASH_COMPLETE;\\
\\
\\
\\
while(0)
写入函数
__attribute__((used)) NVM_DRIVER_SECTION FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data)
FLASH_Status status = FLASH_COMPLETE;
__IO uint32_t tmp = 0;
FLASH_WaitForLastOperation(ProgramTimeout,&status);
if(status == FLASH_COMPLETE)
/* if the previous operation is completed, proceed to program the new first
half word */
FLASH->CR |= CR_PG_Set;
*(__IO uint16_t*)Address = (uint16_t)Data;
/* Wait for last operation to be completed */
FLASH_WaitForLastOperation(ProgramTimeout,&status);
if(status == FLASH_COMPLETE)
/* if the previous operation is completed, proceed to program the new second
half word */
tmp = Address + 2;
*(__IO uint16_t*) tmp = Data >> 16;
/* Wait for last operation to be completed */
FLASH_WaitForLastOperation(ProgramTimeout,&status);
/* Disable the PG Bit */
FLASH->CR &= CR_PG_Reset;
else
/* Disable the PG Bit */
FLASH->CR &= CR_PG_Reset;
/* Return the Program Status */
return status;
其中用到的函数也已经改为宏定义
编译后的map
gs_FlashDriverAPI 0x08020000 Data 8 main.o(.NVM_Driver_Section_offset)
FLASH_ErasePage 0x08020009 Thumb Code 186 stm32f10x_flash.o(.NVM_Driver_Section)
FLASH_ProgramWord 0x080200c3 Thumb Code 250 stm32f10x_flash.o(.NVM_Driver_Section)
函数需要偶数地址对齐
hexview中显示:
手动测试
__align(4) uint8_t flash_erase_buf[]=
0x30,0xB5, 0x6C, 0x49, 0x04, 0x46, 0x4F, 0xF4,
0x30, 0x22, 0xCD, 0x68, 0x04, 0x20, 0x13, 0x46, 0xED, 0x07, 0x09, 0xD1, 0xCB, 0x68, 0x5B, 0x07,
0x01, 0xD5, 0x02, 0x20, 0x30, 0xBD, 0xCB, 0x68, 0xDB, 0x06, 0x18, 0xD5, 0x03, 0x20, 0x30, 0xBD,
0xCD, 0x68, 0x04, 0x20, 0xED, 0x07, 0x02, 0xD0, 0x5B, 0x1E, 0xF9, 0xD1, 0x1C, 0xE0, 0xCD, 0x68,
0x6D, 0x07, 0x01, 0xD5, 0x02, 0x20, 0x06, 0xE0, 0xCD, 0x68, 0xED, 0x06, 0x03, 0xD5, 0x03, 0x20,
0x01, 0x2B, 0x11, 0xD0, 0x30, 0xBD, 0x01, 0x2B, 0x0E, 0xD0, 0x04, 0x28, 0xFA, 0xD1, 0x0B, 0x69,
0x43, 0xF0, 0x02, 0x03, 0x0B, 0x61, 0x4C, 0x61, 0x0B, 0x69, 0x43, 0xF0, 0x40, 0x03, 0x0B, 0x61,
0xCB, 0x68, 0xDB, 0x07, 0x0C, 0xD1, 0x01, 0xE0, 0x05, 0x20, 0x30, 0xBD, 0xCA, 0x68, 0x52, 0x07,
0x01, 0xD5, 0x02, 0x20, 0x17, 0xE0, 0xCA, 0x68, 0xD2, 0x06, 0x14, 0xD5, 0x03, 0x20, 0x12, 0xE0,
0xCB, 0x68, 0x04, 0x20, 0xDB, 0x07, 0x02, 0xD0, 0x52, 0x1E, 0xF9, 0xD1, 0x0A, 0xE0, 0xCB, 0x68,
0x5B, 0x07, 0x01, 0xD5, 0x02, 0x20, 0x03, 0xE0, 0xCB, 0x68, 0xDB, 0x06, 0x00, 0xD5, 0x03, 0x20,
0x01, 0x2A, 0x00, 0xD1, 0x05, 0x20, 0x0A, 0x69, 0x41, 0xF6, 0xFD, 0x73, 0x1A, 0x40, 0x0A, 0x61,
0x30, 0xBD
;
__align(4) uint8_t flash_write_buf[]=
0xF8, 0xB5, 0x00, 0x92, 0x3C, 0x4A, 0x06, 0x46, 0x04, 0x20, 0xC3, 0x02,
0xD4, 0x68, 0x1D, 0x46, 0xE4, 0x07, 0x09, 0xD1, 0xD4, 0x68, 0x64, 0x07, 0x01, 0xD5, 0x02, 0x20,
0xF8, 0xBD, 0xD4, 0x68, 0xE4, 0x06, 0x18, 0xD5, 0x03, 0x20, 0xF8, 0xBD, 0xD4, 0x68, 0x04, 0x20,
0xE4, 0x07, 0x02, 0xD0, 0x6D, 0x1E, 0xF9, 0xD1, 0x1B, 0xE0, 0xD4, 0x68, 0x64, 0x07, 0x01, 0xD5,
0x02, 0x20, 0x06, 0xE0, 0xD4, 0x68, 0xE4, 0x06, 0x03, 0xD5, 0x03, 0x20, 0x01, 0x2D, 0x10, 0xD0,
0xF8, 0xBD, 0x01, 0x2D, 0x0D, 0xD0, 0x04, 0x28, 0xFA, 0xD1, 0x14, 0x69, 0x44, 0xF0, 0x01, 0x04,
0x14, 0x61, 0x31, 0x80, 0xD5, 0x68, 0x1C, 0x46, 0xEF, 0x07, 0x41, 0xF6, 0xFE, 0x75, 0x09, 0xD1,
0x01, 0xE0, 0x05, 0x20, 0xF8, 0xBD, 0xD4, 0x68, 0x64, 0x07, 0x21, 0xD4, 0xD4, 0x68, 0xE4, 0x06,
0x23, 0xD4, 0x13, 0xE0, 0xD7, 0x68, 0x04, 0x20, 0xFF, 0x07, 0x02, 0xD0, 0x64, 0x1E, 0xF9, 0xD1,
0x2F, 0xE0, 0xD7, 0x68, 0x7F, 0x07, 0x01, 0xD5, 0x02, 0x20, 0x03, 0xE0, 0xD7, 0x68, 0xFF, 0x06,
0x00, 0xD5, 0x03, 0x20, 0x01, 0x2C, 0x24, 0xD0, 0x04, 0x28, 0x23, 0xD1, 0xB6, 0x1C, 0x09, 0x0C,
0x00, 0x96, 0x31, 0x80, 0xD1, 0x68, 0xC9, 0x07, 0x09, 0xD1, 0xD1, 0x68, 0x49, 0x07, 0x01, 0xD5,
0x02, 0x20, 0x17, 0xE0, 0xD1, 0x68, 0xC9, 0x06, 0x14, 0xD5, 0x03, 0x20, 0x12, 0xE0, 0xD1, 0x68,
0x04, 0x20, 0xC9, 0x07, 0x02, 0xD0, 0x5B, 0x1E, 0xF9, 0xD1, 0x0A, 0xE0, 0xD1, 0x68, 0x49, 0x07,
0x01, 0xD5, 0x02, 0x20, 0x03, 0xE0, 0xD1, 0x68, 0xC9, 0x06, 0x00, 0xD5, 0x03, 0x20, 0x01, 0x2B,
0x00, 0xD1, 0x05, 0x20, 0x11, 0x69, 0x29, 0x40, 0x11, 0x61, 0xF8, 0xBD, 0x00, 0x20, 0x02, 0x40,
;
typedef void (*flash_erase_handler)(uint32_t u32addr);
typedef void (*flash_write_handler)(uint32_t u32addr, uint32_t u32data);
flash_erase_handler flash_erase = (flash_erase_handler)(flash_erase_buf + 1);
flash_write_handler flash_write = (flash_write_handler)(flash_write_buf + 1);
#define Test_addr 0x08030000
函数地址为0x08020009,往前一位开始复制,186byte,得到擦除函数
此处数组+1是因为指令LSB即最低有效位为0时是ARM指令,为1时是Thumb代码,此处需要+1使其成为Thumb代码
同理,可得到写入函数。
运行擦除函数:
目的地址内容被擦除
运行写入函数:
可以看到写入值正常。
HexView提取指定地址内容并重映射
编辑bat脚本如下
.\\HexTools\\hexview.exe /G /s .\\RVMDK\\Output\\Project.hex /AR:0x8020000-0x80201bf /xi:16 -o FlashDrv.hex /e:errorfile
.\\HexTools\\hexview.exe /G /s FlashDrv.hex /remap:0x8020000-0x80201bf,0x20001000,0x1c0,0x1c0 /xi:16 -o FlashDrv.hex /e:errorfile
使用/AR命令提取指定地址内容
使用/remap命令对地址进行remap,重映射地址为0x20001000,block大小为0x1c0
提取的flashdrv如下图所示:
总结
本文介绍了STM32F103 Flashdriver的制作过程,如果编译器有工具支持直接重映射到ram地址的话,就不需要后面hexview的步骤了,例如S32DS中就有。(keil中可能也有,后面如果研究出来了再补上)
若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~ 你的鼓励是对小弟的最大支持~~~ 建了一个WX公众h,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新~
花絮制作软件
台湾剧都有花絮 而且都很好看 有动画什么的 是不是专门的制作软件做的呀 有的话是什么样的软件呀
adobeaftereffects这是一款专门用来做片头花絮的软件,不过入门比较难,好在网上教材很多。 参考技术A 绘声绘影。 参考技术B 常用的有1Vegas Video 4.0
Vegas4.0是PC平台上用于视频编辑、音频制作、合成、字幕和编码的专业产品。它具有漂亮直观的界面和功能强大的音视频制作工具,为DV视频、音频录制、编辑和混合、流媒体内容作品和环绕声制作提供完整的集成的解决方法。
Vegas4.0为专业的多媒体制作树立一个新的标准,应用高质量切换、过滤器、片头字幕滚动和文本动画;创建复杂的合成,关键帧轨迹运动和动态全景/局部裁剪,具有不受限制的音轨和非常卓越的灵活性。利用高效计算机和大的内存,Vegas4.0从时间线提供特技和切换的实时预览,而不必渲染。使用3轮原色和合成色校正滤波器完成先进的颜色校正和场景匹配。使用新的视频示波器精确观看图像信号电平,包括波形、矢量显示、视频RGB值(RGB
Parade)和频率曲线监视器。
Vegas4.0也在音频灵活性中提供终极的功能,包括不受限制的轨迹、对24 bit/96
kHz声音支持、记录输入信号监视、特技自动控制、时间压缩/扩展等等。Vegas4.0具有超过30个摄影室品质的实时DirectX特技,包括EQ、混响、噪声门限、时间压缩/扩展和延迟。Vegas4.0充分结合特效、合成、滤波器、剪裁和动态控制等多项工具,提供数字视频流媒体,成为DV视频编辑、多媒体制作和广播等较好的解决方案。
Final Cut Pro 4
这个视频剪辑软件由Premiere创始人Randy Ubillos设计,充分利用了 PowerPC G4
处理器中的“极速引擎”(Velocity Engine)处理核心,提供全新功能,例如不需要加装
PCI卡,就可以实时预览过渡与视频特技编辑、合成和特技,Matrox最近宣布将给Final Cut
Pro增加实时特性的硬件加速。该软件的界面设计相当友好,按钮位置得当,具有漂亮的3D感觉,拥有标准的项目窗口及大小可变的双监视器窗口,它运用Avid系统中含有的三点编辑功能,在preferences菜单中进行所有的DV预置之后,采集视频相当爽,用软件控制摄像机,可批量采集。时间线简洁容易浏览,程序的设计者选择邻接的编辑方式,剪辑是首尾相连放置的,切换(例如淡入淡出或划变)是通过在编辑点上双击指定的,并使用控制句柄来控制效果的长度以及入和出。特技调色板具有很多切换,虽然大部分是时髦的飞行运动、卷页模式,然而,这些切换是可自定义的,它使Final
Cut Pro优于只有提供少许平凡运行特技的其他的套装软件。
在Final Cut Pro中有许多项目都可以通过具体的参数来设定,这样就可以达到非常精细的调整。Final Cut
Pro支持DV标准和所有的QuickTime格式,凡是QuickTime支持的媒体格式在Final Cut
Pro都可以使用,这样就可以充分利用以前制作的各种格式的视频文件,还包括数不胜数的Flash动画文件。
总之,这是一个非常好的软件包,它提供较佳的编辑功能,具有像Adobe After Effects高端合成程序包中的合成特性。
Adobe Premiere 6.5
Adobe Premiere
6.5软件用于Mac和PC平台,通过对数字视频编辑处理的改进(从采集视频到编辑,直到最终的项目输出),已经设计成专业人员使用的产品。它提供内置的跨平台支持以利于DV设备的大范围的选择,增强的用户界面,新的专业编辑工具和与其他的Adobe应用软件(包括After
Effects,Photoshop和GoLive)无缝的结合。目前,Premiere已经成为桌面制作人员的数字非线性编辑软件中的标准。Adobe一直保证Premiere将与变革技术的要求同步发展,随着Premiere
6.5的开发使用,Adobe已经达到这些要求,虽然大部分界面仍然原封不动,但是拥有一些可喜的变化,当打开程序时,要求用户在A/B风格编辑时间线之间选择,或选择单声道界面以利于使用。时间线的左下角也包含快速访问新的、频繁使用时间线特性的按钮,例如Track
Options对话框,Toggle Snap to Edges,Toggle Edge Viewing,Toggle Shift
Tracks选项和Toggle Sync模式,还可以使用窗口底部的Track Options对话框按钮打开Track
Options对话框,快速添加一个或多个视频或音频轨迹。Adobe Premiere 6.5中新的工具包括专业级的音频混合器和Automate to
Timeline,它们可同时从故事板或项目窗口传送剪辑序列到时间线。Adobe Premiere
6.5也具有数目众多的界面优化和自定义特性,在整个制作阶段,很容易使用Adobe Premiere的功能强大的编辑工具。
Premiere
6.5中最大的变化就是对实时软件效果的支持。现在,在Premiere中所做的一切都可以实时预览,包括字幕、色调甚至第三方效果。
Adobe意识到与苹果的数字视频功能集成是Premiere成功的关键,所以Premiere 6.5既集成iDVD,又集成DVD Studio
Pro,前者是苹果的消费级DVD创作软件,后者是苹果的专业级DVD主打解决方案,可以把内容存成DV(数字视频)格式,以便在iDVD中使用,而装了DVD
Studio Pro,就可以直接从Premiere的时间线以MPEG-2格式创建DVD了。时间线标记数据是可以导出的,因此也可以在DVD
Studio Pro中使用章节点和单帧数据。
in:sync Speed Razor 2000
Speed
Razor是Windows完全多线程非线性视频编辑和合成软件,提供全屏幕D1未压缩的品质视频、完全场渲染的NTSC或PAL。它具有不受限制的音视频层,以及DAT品质输出的高达20音频层的实时声音混合。它同差不多所有的编辑硬件一道工作,提供实时双流媒体或单流媒体配置。现在,Speed
Razor有两个新的版本:Speed Razor 2000和Speed Razor 2000
X。这两个版本都增加了新的特性,例如可预设快捷键、多重二进制和导出QuickTime格式文件的功能。Speed
Razor具有专业的实时视频编辑、实时音频混合和实时视频特技合成的能力。Speed
Razor的主要特性包括:精确到帧的批量采集和打印到磁带、大量的快捷键、单步调整方法、不受层限制的合成、高达20个音轨的实时多通道音频混合、CD或DAT品质立体声输出和使作品发送到网站上。Speed
Razor使用众多的视频采集硬件,包括Pinnacle系统Targa和DC30系列,Matrox DigiSuite,DigiSuite
LE和DTV,FAST DV Master Pro,DPS Perception和Newtek Video Toaster。
除了DigiSuite先进的实时功能外,它多样的切换矩阵和灵活的过渡特技发生器都令它成为 Speed Razor
自由形式分层编辑和合成的理想的硬件平台。超高速多层合成,加上复杂的特技及移动遮挡和加速的图形转换,使其效率更高。
Ulead Media Studio Pro 6.5
它包括一个编辑程序包,它的文本和视频着色功能方面具有特别的处理强度。Media Studio
Pro提供基于PC的纯MPEG-2和DV支持,它允许从录像机、电视、光盘或摄录一体机采集以及观看原始视频。使用Ligos公司的GoMotion技术,支持IEEE
1394和MPEG-
2的DV,确保高品质视频,并大大提高了生产效率。MSP的视频编辑器集合了所有的视频成分——视频、声音、动画和字幕,并改进了这些成分,增加了特技和切换,可以将视频保存为一个文件,把放它在因特网、CD-ROM或录制到录像磁带上。另一个包括MSP的最佳的小程序是视频着色,这一可动画的视频着色程序允许直接在视频序列中的任何帧上着色。对MSP的文本部分特别注意,名为CG
Infinity,这个十分完整的基于矢量的图形制作程序生成令人佩服的动画字幕和活动图像。
Media Studio Pro
6.5增加了一些高级功能,包括DV场景检测、MPEG-2编辑甚至还有DVD光盘制作(这些功能大多都是Ulead的消费类产品中首先推出的),它还提供了直接捕捉MPEG-1和MPEG-2的功能,以及Vectorscope和Waveform监视器以校正色彩。
United Media On-line Express
On-Line Express 专为DigiSuite 平台设计的。On-Line Express 支持所有 DigiSuite
实时功能,包括可调关键帧的慢动作控制、复杂的背景制作、四声道输入和输出、多层合成和加速输出到磁带。On-Line Express
用户还可使用遥控搜索钮?Discreet Edit�*
拥有非线性编辑系统需要的全部编辑能力:快速剪接、滑动、拖动、替换、插入和覆盖,同时为长短不同的项目提供极好的媒体处理能力。在多处理、Windows
2000多线程环境中,使用Edit非线性编辑系统,将拥有从第一次剪接到在线全过程所需要的速度。Edit桌面系统提供实时关键帧动画的全部图形和特效能力,实时访问Combustion,它是著名的跟踪、图像稳定、绘画和颜色调整工具软件。这个Windows软件程序包根据使用的硬件不同有5个不同的特色,最好是使用Matrox
DigiSuite LE和Matrox
DigiSuite采集卡的选项1和选项2。现在的版本6.5增加了更多的合成特性,与DV兼容,可与Discreet公司的其他产品更好地配合使用。它是编辑未压缩的视频的最佳解决方案,编辑是实时的,非线性编辑解决方案在该桌面上完成合成、抠像和直观的特技。Edit完善的多层时间轴的垂直编辑完全使用Alpha通道,编辑复杂的关键帧,48条实时音轨混编使Edit成为广播电视、多媒体项目完美的非线性应用系统。快速时间轴编辑,先进的特效和音频;与Combustion结合,
全部这些都支持广播质量的非压缩图像。Jobnet,一个功能强大的对编辑功能的扩展,在Edit工作站之间共享项目、工作组、时间线、媒介、图形以及独立的片段数据。
AIST MoviePack
MoviePack是一个用于PC的全功能的视频编辑、合成和图像动画软件工具,具有3D特技和超速渲染的先进的核心技术。核心技术QPM和AMT形成AIST的“直接实时预览”或LPR的基础,它不落后于用户的动作,并显示所有的变化,包括切换、特技、变形、颜色校正和字幕。这个软件包是围绕开放式体系结构构建的,它允许用户扩展它,这意味着当要求改变时不必去寻找另外的新程序。作为一个开放的插件主体,MoviePack也给予自定义访问第三方厂家的插件。MoviePack大的改革是AIST称为Intelli渲染的内容,使渲染的视频和剪辑能够从时间线直接播放,只有被修改的帧被重新渲染,不再需要重新渲染整个剪辑。
Incite Studio 2.6
它是一个Windows软件包,设计在Matrox DigiSuite,DigiSuite LE和DigiSuite
DTV硬件上运行。Incite提供一个易用编辑界面、多层的编辑方式,包含许多实用程序以及许多具有无限关键帧的实时特技。它是使用模拟磁带机器的最佳的系统,使用这些机器在同样的时间线上处理基于硬盘的所有剪辑。Incite
是第一款具有“混合”(将基于磁盘、磁带和现场的信号混合)编辑功能的基于 DigiSuite 的软件,还有配音录音和同时视频播放和录制。它充分利用
DigiSuite 平台的实时性能,复杂的合成可使用多层合成引擎完成,Incite 用户还可使用遥控搜索钮疡市场上最好的混合数字视频编辑器的荣誉。
Avid Xpress 4
该软件拥有编辑层的独特的方法,视频是无损的。它是可以在桌面工作站或笔记本上使用的唯一的一个软件产品,用户界面非常像Avid Media
Composer。新的版本Xpress 4使用Terran Interactive(包含Media Cleaner
EZ),增加了可以在任何地方提供媒体的功能,包括一套功能强大的视频编辑、特技、音频、字幕、图像、合成和协同工作的工具。
电视台用的:
Sony的专业光盘系统自从2004年2月底正式供货以来,可优化工作流程的优势使其在全球范围内获得了广大广播电视专业级用户的认可,迄今为止,Sony已经给全世界的广播公司、设备租赁公司和制作公司供应了超过4,000套的XDCAM设备,包括德国的WDR、美国的NBC和CBS等大型广播电视机构都已成为专业光盘的用户。
在中国,包括中央电视台在内的各级大型电视台也纷纷使用XDCAM专业光盘设备革新工作流程,在使用了专业光盘设备之后,都深刻感受到了这套系统给他们的节目制作流程带来的快捷、高效。近期,黑龙江电视台、沈阳电视台和济南电视台的工作人员在使用了专业光盘系统之后与我们分享了他们的使用体会和经验。
黑龙江电视台吕洋
黑龙江电视台吕洋在对Sony专业光盘摄像机PDW-530P进行了综合评测后,这套设备的诸多新功能给他留下了很深的印象。在他的使用报告中,他这样描述道:
“因为Sony PDW-530P 是在原有的数字摄像机IMX的基础上研发的新型专业光盘摄像机,在记录方式上采用动态影像压缩标准(MPEG2)进行图像记录。在摄像单元上与以前的数字摄像机一样仍采用12位A/D转换器将电信号转成数字信号,再用处理器将数字信号进行压缩,最后将压缩过的数字信号通过专业光驱动器刻录在光盘上。整个录像单元就如一台计算机。
■影像压缩
由于Sony PDW-530P 是采用MPEG IMX 兼容记录格式,影像得到了很大程度的压缩,这也使得新闻素材的编辑可以直接通过计算机(笔记本电脑)完成,而在影像传输方面则可以通过互联网进行传输。
■16:9和4:3画面切换
PDW-530P摄像机能够在16:9 宽高比例的宽画面和4:3 宽高比例的画面之间进行切换。
■按剪辑单元记录和播放
每次开始和结束记录时都会创造一个独立的单元,在播放过程中可以跳转到任意剪辑以查看记录的视频。
■2.5 英寸彩色液晶屏幕
摄像机在侧面加装了一个彩色液晶屏幕,这样在前期拍摄时可以即拍即审,对工作质量有所提高。
■微机化功能
摄像机的各项设置是按照微机化菜单设计的,所有的剪辑单元在彩色屏幕上都是以微缩图呈现的。操作起来更加方便快捷。
■快捷键
在机身上增加了4 个自定义快捷键,使得在紧张的采访过程中节省了时间。”
沈阳电视台陈孚
沈阳电视台新闻中心陈孚在使用XDCAM专业光盘设备之后,主要围绕这款设备同DNW-7P不同的地方加以了阐述和说明:
■在外观方面
第一次看到专业光盘的机器,感觉这种后身比较宽大的设计可能会使得机器难以控制,但实践证明,外观是只要看习惯就好啦,对使用并不会造成任何影响。而且,也有人一看见就喊酷的。
扛上肩膀,马上发现一个比较明显的变化,重量较DNW-7P要重,后来找到机会实地比较了一下两台机器的重量,在XDCAM设备配备倍增镜头的情况下,要比DNW-7P重一斤多。但是,在实际使用中,我发现这些重量的变化对我的影响并不大,相反的,重量的加大反而有利于在拍摄的时候更加稳健,而且可以活动的肩托也很好的发挥了“人性化”的特点,可以让整个重量均匀的分布在肩膀上,确实比较舒服,经过一个月左右的使用,重量的变化已经完全可以适应。
■软件稳定性
最新版本的专业光盘系统,整体稳定性良好,完全可以满足新闻节目制作要求。
■专业光盘的特点
用光盘记载拍摄内容应该是XDCAM机器最特别的地方。在使用过程中,发现这种方式有许多优点:
优点一,携带方便,不占地方;
优点二,外形较时尚,会引来其他同行羡慕的目光。
优点三,记录各个片断紧密结合,不存在断磁这样的问题,同时,不会无故覆盖以前拍摄的画面,比较放心。
优点四,可以通过记录画面的形式进行回放,而且是直接在摄像机上回放,非常方便参看刚刚拍摄过的内容和以前拍摄的东西,尤其在采访结束后,面对对方“能不能让我看一看”的合理要求,可以大大方方的答应了。
总体来说,这是一款非常出色的机器,提供了许多原来的磁带机上不可能提供的功能,如单机编辑,场景设定等。在提高节目质量,提高制作效率的同时,也对摄像师和编辑记者专业知识和制作技术的更新起到了推动作用。”
济南电视台马壮
济南电视台马壮在使用XDCAM 摄像机及索贝移动非线性编辑系统后,与我们分享了他的使用体会:
“XDCAM摄像机使用的记录媒体为专业光盘,光盘最大的好处是写入和读去数据是非线性的,这就给拍摄带来了很大的方便,比如可以不用为后期编辑预留带头的预卷时间。可在拍摄完部分素材后,很方便的浏览记录的素材,并可在浏览后直接进行新的拍摄。
Sony的这款机器还附带了很多新的功能,比如PAINT功能,可以让摄像师根据场景的光线很轻松的调整画面的反差、细节,很好的来控制高光和低光部分的细节层次。
EditMax1000 是索贝数码最新推出的移动非编系列产品,与Sony XDCAM 专业光盘产品结合,为本地、紧急新闻、异地记者站提供全方位的新闻采编、传输的全流程解决方案。拍摄完的素材可以很方便用一根网线将专业光盘的录像机和笔记本电脑相连,这样就可以将光盘中素材很快速的上载到电脑中。它提供了一个很好的编辑方案,那就是先上载低码率的素材,实现快速的上载和编辑,等全部节目编辑完成后,再刷新上载高码率的素材,然后打包生成后,再写回光盘。在这一过程中,各设备之间传送的是数据而不是信号,应该没有任何损失。我非常喜欢这种编辑方式。”
民用级
(因为很难找,把他放在了最后)
http://lthz.b2b.hc360.com/product/2525229.html
民用非线编 CYLet's edit500 超越
http://lthz.b2b.hc360.com/product/2525248.html
民用非线编 影音大师8 超越本回答被提问者采纳
以上是关于STM32F103制作FlashDriver的主要内容,如果未能解决你的问题,请参考以下文章
Arduino框架下STM32F103C系列单片机引脚映射关系
STM32F103单片机温湿度等监测Android手机蓝牙APP显示控制设计
基于STM32F103的网络天气时钟--------单片机串口获取天气