文档库 最新最全的文档下载
当前位置:文档库 › atmel Studio 6.1环境下的bootloader

atmel Studio 6.1环境下的bootloader

atmel Studio 6.1环境下的bootloader
atmel Studio 6.1环境下的bootloader

网上有关AVR的bootloader配置大部分都是关于ICCAVR的,我用Atmel Studio 6.1弄了好久才出来,这里给大家讲下(我用的AT90CAN32)

首先程序和马老师的几乎一样,只是稍微有改进,因为Atmel Studio 6.1本身有boot.h文件,包含该文件之后可以省去一些汇编的语言。程序会在最后附上。下面主要说下配置问题。

1、熔丝位配置:如图1

图1

JTAGEN 或SPIEN一定要打勾使能,要不然如果bootloader烧写不成功以后就不能用JTAG或SPI了,那么单片机就锁死了,我就锁死了一个单片机,哭晕。。。

BOOTSZ;选择1k或2k或3k或4k

BOOTRST:打勾,这样的话程序会从bootloader定义的地址开始烧写,比如我的程序会从0X3800开始写入

2、如图2点击project——>文件名porperties——>toolchain出现如图3所示,点击memory settings,在FLASH segment 中输入.text=0x3800(注意0x3800是和熔丝位设置的bootloader 区的大小一样的)

图2

图3

点击Misellaneous,输入-WI,--section-start=.text=0x7000(其中0x7000是0x3800的二倍,如果你设置的不是0x3800,那么也只需要按照你设置的乘以2就行)

图4

到这里就配置完成了。

如果配置完成了,那么正常情况下就可以把程序烧写进入单片机了,这时候用串口就可以从单片机向上位机发送指令了,如果三秒钟之内给单片机回复d的话,单片机回复C之后,就可以向单片机发送命令了,这里用的是超级终端,WIN7本身没有超级终端,需要下载,我下载的是如图5所示的超级终端。打开超级终端时候注意配置波特率和结束位等,还有就是发送文件时注意选择XMODEM协议。剩下的就可以按照ICCAVR的方法进行发送和接收了,这里主要说的是配置方法和ICCAVR的不同

图5

#include

#include

#include

#include

#include

#include

#define SPM_PAGESIZE 256 //M128的一个Flash页为256字节(128字)

#define BAUD 9600//波特率采用38400bps

#define CRYSTAL 10000000 //系统时钟8MHz

#define baud_l (UCHAR)(baud_setting) //低位

#define UCHAR unsigned char

#define UINT unsigned int

#define ULONG unsigned long

#define USHOT unsigned short

#define DATA_BUFFER_SIZE SPM_PAGESIZE //定义接收缓冲区长度

//定义Xmoden控制字符

#define XMODEM_NUL 0x00

#define XMODEM_SOH 0x01

#define XMODEM_STX 0x02

#define XMODEM_EOT 0x04

#define XMODEM_ACK 0x06

#define XMODEM_NAK 0x15

#define XMODEM_CAN 0x18

#define XMODEM_EOF 0x1A

#define XMODEM_RECIEVING_WAIT_CHAR 'C'

//定义全局变量

const char startupString[]="Type 'd' download, Others run app.\n\r\0"; UCHAR data[DATA_BUFFER_SIZE];

long address = 0;

#define USART0_T PORTE |= (1<

#define USART0_R PORTE &= ~(1<

/*

voidboot_page_ew(long p_address,char code)

{

asm("mov r30,r22\n"

"mov r31,r23\n"

"out 0x3b,r24\n"); //将页地址放入Z 寄存器和RAMPZ 的Bit0 中SPMCSR = code; //寄存器SPMCSR 中为操作码

asm("spm\n"); //对指定Flash 页进行操作

}

//填充Flash 缓冲页中的一个字

void boot_page_fill_1(unsigned intaddress,int data)

{

asm("mov r30,r24\n"

"mov r31,r25\n" //Z 寄存器中为填冲页内地址

"mov r0,r22\n"

"mov r1,r23\n"); //R0R1 中为一个指令字

SPMCSR = 0x01;

asm("spm\n");

}

//等待一个Flash 页的写完成

voidwait_page_rw_ok(void)

{

while(SPMCSR & 0x40)

{

while(SPMCSR & 0x01);

SPMCSR = 0x11;

asm("spm\n");

}

}

//更新一个Flash 页的完整处理

voidwrite_one_page(void)

{

int i;

boot_page_ew(address,0x03); //擦除一个Flash 页

wait_page_rw_ok(); //等待擦除完成

for(i=0;i

boot_page_fill_1(address+i, data[i]+(data[i+1]<<8));

//boot_page_fill_1(0x5555, 0x4444);

}

boot_page_ew(address,0x05); //将缓冲页数据写入一个Flash 页wait_page_rw_ok(); //等待写入完成

}*/

//更新一个Flash页的完整处理

voidwrite_one_page(void)

{

int i;

uint8_tsreg;

sreg = SREG;

UINT K;

//cli();

//eeprom_busy_wait ();

boot_page_erase(address); //擦除一个Flash页

boot_spm_busy_wait (); //等待擦除完成

for(i=0;i

{

K=data[i]+data[i+1]*256;

boot_page_fill(address+i,K);

//boot_page_fill(address+i,0x1234);

}

boot_page_write(address); //将缓冲页数据写入一个Flash页boot_spm_busy_wait (); //等待写入完成

//boot_rww_enable ();

SREG = sreg;

}

/*

voidboot_program_page (uint32_t page, uint8_t *buf)

{

uint16_t i;

uint8_tsreg;

// Disable interrupts.

sreg = SREG;

cli();

eeprom_busy_wait ();

boot_page_erase (page);

boot_spm_busy_wait (); // Wait until the memory is erased.

for (i=0; i

{

// Set up little-endian word.

uint16_t w = *buf++;

w += (*buf++) << 8;

boot_page_fill (page + i, w);

}

boot_page_write (page); // Store buffer in flash page.

boot_spm_busy_wait(); // Wait until the memory is written.

// Reenable RWW-section again. We need this if we want to jump back

// to the application after bootloading.

boot_rww_enable ();

// Re-enable interrupts (if they were ever enabled).

SREG = sreg;

}*/

//从RS232发送一个字节

voiduart_putchar(char c)

{

while(!(UCSR0A & 0x20));

UDR0 = c;

}

//从RS232接收一个字节

intuart_getchar(void)

{

unsigned char status,res;

if(!(UCSR0A & 0x80)) return -1; //no data to be received

status = UCSR0A;

res = UDR0;

if (status & 0x1c) return -1; // If error, return -1

return res;

}

//等待从RS232接收一个有效的字节

charuart_waitchar(void)

{

int c;

while((c=uart_getchar())==-1);

return (char)c;

}

//计算CRC

intcalcrc(char *ptr, int count)

{

intcrc = 0;

char i;

while (--count >= 0)

{

crc = crc ^ (int) *ptr++ << 8;

i = 8;

do

{

if (crc& 0x8000)

crc = crc<< 1 ^ 0x1021;

else

crc = crc<< 1;

} while(--i);

}

return (crc);

}

//退出Bootloader程序,从0x0000处执行应用程序

void quit(void)

{

uart_putchar('O');uart_putchar('K');

uart_putchar(0x0d);uart_putchar(0x0a);

while(!(UCSR0A & 0x20)); //等待结束提示信息回送完成

MCUCR = 0x01;

MCUCR = 0x00; //将中断向量表迁移到应用程序区头部

RAMPZ = 0x00; //RAMPZ 清零初始化

SPMCSR = SPMCSR&0XFE;

boot_rww_enable();

asm("jmp 0x0000\n"); //跳转到Flash 的0x0000 处,执行用户的应用程序uart_putchar('O');uart_putchar('K');

}

//主程序

void main(void)

{

int i = 0;

unsignedinttimercount = 0;

unsigned char packNO = 1;

intbufferPoint = 0;

unsignedintcrc;

UCHAR K1,K2;

//初始化M128的USART0(UINT)((ULONG)CRYSTAL/(8*(ULONG)BAUD)-1)

//UBRR0H = (UINT)((ULONG)CRYSTAL/(8*(ULONG)BAUD)-1)>>8;

//UBRR0L = (UINT)((ULONG)CRYSTAL/(8*(ULONG)BAUD)-1); //Set baud rate UBRR0H = (CRYSTAL/BAUD/16-1)>>8;

UBRR0L = CRYSTAL/BAUD/16-1; //Set baud rate

UCSR0B = 0x18; //Enable Receiver and Transmitter

UCSR0C = 0x0E; //Set frame format: 8data, 2stop bit

//初始化M128的T/C0,15ms自动重载

TCCR3B = (1<

TIMSK3 = (1<

TIFR3 = (1<

TCNT3H = 0;

TCNT3L = 0;

OCR3AH = 0x03; //定时为5ms,0x030D OCR3AL = 0x0D;

//向PC机发送开始提示信息

while(startupString[i]!='\0')

{

USART0_T;

uart_putchar(startupString[i]);

i++;

}

//3秒种等待PC下发“d”,否则退出Bootloader程序,从0x0000处执行应用程序while(1)

{

if(uart_getchar()== 'd') break;

if (TIFR3 & 0x02) //timer0 over flow

{

if (++timercount> 600)

quit(); //600*5ms = 3s

TIFR3 = TIFR3|0x02;

}

}

//每秒向PC机发送一个控制字符“C”,等待控制字〈soh〉

while(uart_getchar()!=XMODEM_SOH) //receive the start of Xmodem

{

if(TIFR3 & 0x02) //timer0 over flow

{

if(++timercount> 200) //wait about 1 second

{

USART0_T;

uart_putchar(XMODEM_RECIEVING_WAIT_CHAR); //send a "C"

timercount=0;

}

TIFR3=TIFR3 | 0x02;

}

}

//开始接收数据块

do

{

K1=uart_waitchar();

K2=(~uart_waitchar());

if ((packNO == K1) && (packNO ==K2))

{ //核对数据块编号正确

for(i=0;i<128;i++) //接收128个字节数据

{

data[bufferPoint]= uart_waitchar();

bufferPoint++;

}

crc = (uart_waitchar()<<8);

crc += uart_waitchar(); //接收2个字节的CRC效验字

if(calcrc(&data[bufferPoint-128],128)==crc) //CRC校验验证

{ //正确接收128个字节数据

while(bufferPoint>= SPM_PAGESIZE)

{ //正确接受256个字节的数据

write_one_page(); //收到256字节写入一页Flash中

address += SPM_PAGESIZE; //Flash页加1

bufferPoint = 0;

}

USART0_T;

uart_putchar(XMODEM_ACK); //正确收到一个数据块

packNO++; //数据块编号加1

}

else

{

USART0_T;

uart_putchar(XMODEM_NAK); //要求重发数据块

}

}

else

{

USART0_T;

uart_putchar(XMODEM_NAK); //要求重发数据块

}

}while(uart_waitchar()!=XMODEM_EOT); //循环接收,直到全部发完

USART0_T;

uart_putchar(XMODEM_ACK); //通知PC机全部收到

if(bufferPoint)

write_one_page(); //把剩余的数据写入Flash中

quit(); //退出Bootloader程序,从0x0000处执行应用程序

}

浅谈大数据时代数据新闻的优势与挑战

龙源期刊网 https://www.wendangku.net/doc/554094196.html, 浅谈大数据时代数据新闻的优势与挑战 作者:金星希 来源:《中文信息》2019年第01期 摘要:随着大数据时代的来临,数据新闻充斥着人们生活的方方面面。“数据新闻”是建立在大数据基础上的一种更加直观灵活的新闻呈现方式,是针对新闻报道叙事方式的全新尝试和突破,为当代新闻报道模式注入新鲜血液。本文通过分析数据新闻在传播过程中面临的优势和挑战,提出数据新闻发展需要注意的问题,为新闻适应新时期转型提供新的思路。 关键词:大数据数据新闻优势挑战 中图分类号:G21 文献标识码:A 文章编号:1003-9082(2019)01-0-01 2012年,“大数据”一词强势进入公众视野,标志着数据新闻时代的来临。目前,数据新闻已成为许多媒体人的独门绝技,也成为广大受众获取新闻的新窗口,新闻报道的新趋势,用大潮来袭形容数据新闻实不为过。虽然关于大数据新闻的实践在不断地进行中,但学界关于这方面的研究却十分欠缺,处于理论追逐实践的阶段,新兴模式如何生存的问题掀起了学界一轮又一轮的思考与讨论。 一、大数据时代数据新闻的优势 1.数据新闻弥补了客观报道的叙事空白 社会错综复杂,民意众口难调,目前新闻界遇到的情况比20年、10年甚至3年前更加复杂,当代新闻报道面临着说不清事实的尴尬局面。记者虽然被教育成为全面发展的专才,但是总有知识盲点,难免说多错多,造成报道失实;报道和故事混为一谈,煽情主义再次抬头;叙事无力、要素模糊等行业中的不规范如果不及时制止,将会给新闻界带来致命创伤,蚕食着一代又一代的新闻人。最客观、最真实的信息永远来源于可靠的数据。通过这些数据,新闻记者可以减少文字的组织和感情输出,有一说一。用核实的数据说话,不仅可以增加新闻报道的速度和力度,也可以确保新闻的真实性。 2.数据新闻革新了新闻报道的传统模式 人类解读图形的能力是众多本能中较早开始发育的谋生能力,孩子咿呀学语时,大人会先拿出一两本图画集进行启蒙。数据新闻充分激发了人类的先天能力,改变了传统媒体以文字叙事为主的固定模式,让报道更加美观大方、通俗易懂,充满理性美、深度美。一张报纸上如果全是文字,受众或许会产生抗拒心理。如果加上图形和色彩的巧妙搭配,将图像融入新闻,这就能平衡受众阅读的容忍度和饱和度,大大降低了阅读的难度。信息图是目前数据新闻尝试的发展方向之一,它以简洁明了著称,用色彩、数量、粗细等让人用一目了然的视觉元素解释一

网络数据新闻的发展探析——以新浪图解天下为例

网络数据新闻的发展探析——以新浪图解天下为例-新闻学 网络数据新闻的发展探析——以新浪图解天下为例 阮超男 【摘要】在大数据技术不断发展的今天,网络数据新闻这一新兴的新闻呈现方式日益崛起。本文试以新浪“图解天下”栏目为例,通过内容分析法对网络数据新闻的呈现特点、存在问题以及对策进行分析,以此探讨我国网络数据新闻的发展创新路径。 关键词网络数据新闻图解天下 数据新闻,又称数据驱动新闻,是新闻业不断适应当下信息环境变化不断探索而孕育出的新成果,简单地说就是数据驱动的报道,具体来讲是通过挖掘和展示数据背后的关联与模式,利用丰富的、具有交互性的可视化传播,创作出新闻报道的新方式。① 自2012 年6 月4 日起,新浪门户网站开始推出“图解天下”栏目,新浪新闻中心是这样解释它的:“致力于视觉化,以图达意,提供轻松直观的阅读感受”。随着“图解天下”栏目的发展以及自身报道特色的逐渐形成,更多的受众开始关注这种独特的新闻报道模式。 一、样本选取与类目设计 1、样本选取 本研究以内容分析法搜集数据样本,以新浪“ 图解天下”2012 年6 月4 日到2014 年12 月作为分析时间范围,选取这两年半内新浪图解发表的热点制图报道63 篇,图解天下新闻报道121 期,以及十八大召开期间特别策划4 期,国务院和政府工作报告特别策划2 期,共计特别策划6 期。综合选取分析

样本190个。 2、研究类目 (1)新浪图解天下栏目的新闻来源、地域及类别。所谓的新闻信息来源,即新浪图解新闻资料原始的消息显现地。结合选取样本的实际情况,本文将消息来源划分为“国外研究机构资料”、“国内各级部门和相关单位数据资料”、“传统媒体和网站数据资料”、“来源未标注”四种。按照地域将新闻划分为“国内新闻”和“国际新闻”两种。按照新闻内容的不同,将190 个样本的数据新闻划分为“社会新闻”、“政治新闻”、“财经新闻”、“文娱体科新闻”四种。 (2)新浪图解天下栏目的图片视觉效果。在不同题材、不同性质的数据新闻中,新浪图解应对新闻视觉化处理的方式往往也不相同。本文结合2012 年6 月4 日至2014 年6 月12 日的数据新闻对不同类型新闻题材报道,将190 个数据新闻样本按照色调分为“暖色调”、“冷色调”、“冷色调和暖色调的组合运用”三种。将190 个数据新闻样本的图像划分为“静态图像”和“动态图像”两种。按照样本中使用的图表等信息情况,将新浪图解样本划分为“图表”(包括饼状图、柱形图、数据图以及地图)、“手绘动画漫画和人像”、“表情”、“图表和手绘以及手绘和表情”五种。 (3)新浪图解天下栏目的叙事逻辑分析。将190 个数据新闻样本划分为“以时间顺序展开叙事”和“非以时间为顺序展开叙事”两种。以上所有数据均录入统计软件SPSS中进行客观分析。 二、新浪图解天下数据新闻的分析与讨论 1、新浪图解天下的新闻来源、地域及类别

数据新闻在环境报道中的应用分析

数据新闻在环境报道中的应用分析 互联网技术发展日新月异,各种网络终端的普及和使用导致大规模的数据逐渐转变为可查询的社会资源日渐堆砌起来,大数据时代的来临为各行各业带来以数据为基础的的精确化生产模式的创新,在此基础上,新闻机构关于数据与新闻融合发展的实践也紧跟时代潮流,数据新闻应运而生。与此同时,随着我国经济的飞速发展,各类型的环境问题与日俱增,尤其是近几年,雾霾在全国各大城市的蔓延之势也使得环境报道成为新闻行业普遍关注的问题。环境类新闻也由以往的边缘类话题,逐渐转变为越来越具有新闻价值、越来越热门的新闻话题。关于数据新闻的实践,国外已经形成了成熟的体系,其应用于环境报道中的经典案例也比比皆是;国内媒体关于数据新闻的探索始于2012年,在各类报道中都得到了运用,环境报道也正顺应数据新闻发展的大趋势,在大数据时代寻找适合自身的转型方向。 环境报道通常伴随着大量的环境数据以及专业名词,阅读的过程相对来说较艰涩、乏味,而数据新闻能够将庞大、枯燥数据进行分析处理,最终实现可视化呈现,恰恰解决了环境报道的这一问题,但是数据新闻运用在环境报道的过程中不可避免的存在一些问题亟待解决,因此本文以此作为论点,从数据新闻在环境报道中具体应用出发,分析其存在的必要性及其实践中的问题,并针对这些问题提出意见。本文将以财新数字说、网易数读、搜狐数字之道、新华网数据新闻、人民网图解新闻、澎湃美数课这六家国内知名的数据新闻网站的201篇环境类数据新闻报道为案例,对数据新闻在环境报道中的应用作具体的分析探讨。首先,本文在绪论部分会从研究背景与缘起、研究意义、相关研究综述和研究方法四个方面对文章的整体框架进行介绍。接下来,在第一章从数据新闻的内涵出发,对其国内外发展现状、表现形式、特点和生产流程几个方面进行基础性阐述。 紧接着在第二章中,从国内六家有名的数据新闻网站选取200多篇环境类数据新闻作品,对其在环境报道中的数量、报道主题、报道性质、数据来源和可视化呈现方式几个方面进行内容分析和个案分析。在第三章中举出:数据新闻在生产流程、媒体从业者和新闻价值的判断三个方面对环境报道产生了重要的影响;并在数据获取困难、非结构化数据应用较少,团队建设滞后、从业者数据意识薄弱,可视化形式单一、新闻时效性差等方面存在一些不足之处。最后在第四章中

大数据时代背景下的数据新闻研究

大数据时代背景下的数据新闻研究 1 数据新闻产生的时代背景 目前,随着时代的不断发展,数据新闻可以说是大数据时代背景下的必然产物。传统媒体的模式和格局都随着大数据时代的到来而出现巨大的改变,这是由于大数据时代资料的获取渠道不再取决于传统媒体。处在大数据时代,好像所有的领域都能够和大数据相连,很多的非系统化、毫无关联数据的增加,促使传统媒介的新闻发布方式遭受到了巨大的挑战。在这种情况下,大数据利用其自身的优势,也就是容量大、种类多样、及时性高、获取困难等,在新闻生产过程中获得了业内人士的青睐。数据新闻成为国际媒体工作者,在大数据时代背景下进行的重大改变。这种新型的新闻生产模式,把冗乱的新闻案件用更加直观、清晰明了的方式呈现在观众面前,是广大群众能够通俗易懂的掌握新闻案件的来龙去脉。媒体工作者的工作重心也由过去的抢先发布新闻转变成帮助人民群众了解案件出现的内在关系及造成的影响。 2 数据新闻:大数据时代的必然产物 在大数据的时代背景下,媒体工作者利用对数据的获取、处理和分析生产的数据新闻,能够帮助人民群众更加真实的清楚他们处于的变幻莫测的社会,从另一个方面来说也可以帮助媒体完成其保障群众利益的根本目标。现阶段,国内外有很多专家学者都对数据新闻进行了深入的探究,但他们对于数据新闻的理解及研究存在着不同程度的差异。整体而言,我们能够认为数据新闻即立足于数据的获取、整理、挖掘和解读的基础上,选择直观的数据技术来发布新闻的新型模式,它是国际媒体行业在大数据时代开辟的新道路,指引了未来新闻领域的奋斗方向。数据新闻与传统新闻生产模式相较而言有其自身的优势,即数据新闻的发布要依赖在公开信息的基础上、数据新闻会选择独特的软件来处理信息、数据新闻多数都是以生动沟通的直观方式来发布新闻以及数据新闻坚持保障人民群众利益为己任等,这些特点都决定了数据新闻逐渐成为媒体领域未来的发展趋势,是大数据时代背景下的必然产物。 3 数据新闻对新闻生产的影响 3.1数据新闻给传统媒体领域增添了活力 数据新闻跟传统的新闻发布相较而言,其属于一种全新的新闻播报形式,它在成长的过程中会保留传统新闻播报的有利之处,还会给媒体领域增添活力,如升级了传统新闻播报的模式、处理数据程序及展现形式等。 3.2数据新闻促使新型新闻发布方式的出现 数据新闻促使预测性和众包调查式新闻发布方式的出现,极大地推动了数据新闻的发展。由于大数据时代的不断进步,人们对数据的研究也会逐渐完善,数据新闻会给传统新闻发布带来很大的挑战,而预测性新闻发布也逐渐受到人们的关注。数据新闻的预测性发布不是个别人的观点,而是在可靠的数据分析技术的基础上,在本质上研究了事件的相连关系,满足预测性新闻真实性的价值定位。众包调查式新闻发布方式的出现对网络商业团体的成长起到了非常重要的促进作用,新闻发布行业也引进了这种报道方式,众包式的数据新闻发布能够

相关文档