CCSv5中如何将图像导入DDR中

首先,通过matlab将bmp格式的图像转换成dat格式

下例子以将连续四帧图像转换为dat格式为例:

clc;  
close all;  
clear all;  
%说明:生成DSP实验所用的图像数据Dat文件  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
for i = 1:4
    str = strcat('D:\_Matlab_WorkSpace\', int2str(i), '.bmp');
    I = imread(str);
%I = imread('D:\_Matlab_WorkSpace\000001.bmp');%打开图像,这里改成自己的图像名及路径  
%将图像缩小一点,不然数据量太大  
%I = imresize(I,[128,128],'bicubic');%<span style="color:#ff0000;">缩小成128*128、二维FFT时需要图像为2的n次方</span>  
    figure,imshow(I);%显示图像  
    [N, M, dim] = size(I);%获取图像的高与宽  
    if(dim == 3)  
        I = rgb2gray(I);%如果打开的是彩色图像,则转换成灰度图像  
    end  
    fil = strcat('D:\_Matlab_WorkSpace\', int2str(i), '.dat');
    fid = fopen(fil,'w');%保存.dat图像数据文件  
    fprintf(fid,'%d %d %s %d %d\n',1651,2,'8cc0', 0, i*N*M);%写入二进制文件的第一行  
    %将图片数据写入Dat文件中  
    for n = 1:N  
        for m = 1:M  
            fprintf(fid,'%d\n',I(n,m));  
        end  
    end  
end
fclose(fid);  
disp('Run OK') 
将四个文件合并成一个即可。

其次,将图像导入DDR中,需要知道DDR的地址。查询cmd文件知道其起始地址为0x80000000

Build->Debug程序之后可通过Tools->Load Memory来加载图像信息。


加载成功后,可以通过Memory Browser输入起始地址来查看数据值。亦可通过Tools->Image Analyzer来显示图像。

Properties输入的参数如下图:


然后Refresh之后即可显示图像了。

最后,将DDR的起始地址0x80000000赋给一个变量,就可以通过这个变量对图像进行操作了。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用汇编语言在ccsv5实现DFT运算的示例代码: ``` ; DFT.asm ; 使用汇编语言实现DFT运算 .cdecls C,LIST,"msp430.h" ; 定义常量 .const N = 8 ; DFT长度 PI = 3.1416 ; 圆周率 ; 定义变量 .bss .align 2 x: .space 2*N X: .space 2*N .text ; DFT函数 .global DFT DFT: ; 初始化变量 push R4 push R5 push R6 mov #x, R4 mov #X, R5 mov #N, R6 ; 计算DFT mov #0, R2 ; 初始化k=0 loop: mov.w @R4+, R1 ; x(k) mov.w #0, R0 ; 初始化X(k) mov #0, R3 ; 初始化n=0 inner_loop: mov.w @R4+, R7 ; x(n) mov.w R2, R8 ; k*n mpy R7, r12 ; x(n) * cos(k*n) mac R7, r13 ; x(n) * sin(k*n) add R12, R0 ; X(k) += x(n) * cos(k*n) sub R13, R0 ; X(k) -= x(n) * sin(k*n) inc R3 ; n++ cmp R3, R6 ; n<N? jl inner_loop mov.w R2, R12 ; k mov.w R0, @R5+ ; X(k) add #2, R4 ; x++ inc R2 ; k++ cmp R2, R6 ; k<N? jl loop pop R6 pop R5 pop R4 ret ; 主函数 .global main main: ; 初始化x数组 mov #x, R4 mov.w #1, @R4+ mov.w #2, @R4+ mov.w #3, @R4+ mov.w #4, @R4+ mov.w #5, @R4+ mov.w #6, @R4+ mov.w #7, @R4+ mov.w #8, @R4+ ; 调用DFT函数 call #DFT ; 输出X数组 mov #X, R4 mov.w #N, R6 loop2: mov.w @R4+, R5 ; 输出X(k)的实部和虚部 call #printf mov.w #"\n", R1 call #putchar inc R6 cmp R6, #2*N jl loop2 ; 退出程序 mov.w #0, R15 ; printf函数 .global printf ; putchar函数 .global putchar ``` 这个示例代码实现了一个DFT函数,它可以计算给定长度为N的复数序列x的DFT,结果存储在另一个长度为N的复数序列X。主函数初始化了一个长度为8的复数序列x,然后调用DFT函数计算其DFT,最后输出结果。由于ccsv5没有内置printf和putchar函数,所以你需要自己实现这些函数,或者使用msp430-gcc等其他编译器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值