CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

Help with Fuses to protect code from reading

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
younder



Joined: 24 Jan 2013
Posts: 53
Location: Brazil

View user's profile Send private message

Help with Fuses to protect code from reading
PostPosted: Wed Oct 07, 2015 7:05 pm     Reply with quote

Hello everyone,

I was looking at the fuses.txt and also to some other related threads but I'm still a bit confused about this fuse. The point is that CCS uses different names when comparing with datasheet, which turns it even more complicated sometimes to understand the fuses.

Well, I just need to know which fuse should I use to protect the entire code from been read ?

And Finally, say that I want to update the firmware later, can I erase the chip and write the code again once I've included such fuse?

Some related fuses you'll find inside "fuses.txt" in the compiler directory:

CPB Boot Block Code Protected
CPD Data EEPROM Code Protected
DPROTECT Protect EE memory
EBTR Memory protected from table reads
EBTRB Boot block protected from table reads
NOWRT Program memory not write protected
NOWRTD Data EEPROM not write protected
NOWRTB Boot block not write protected
NOWRTC Configuration registers not write protected
PROTECT Code protected from reads
PROTECT_5% Protect 5% of ROM
PROTECT_50% Protect 50% of ROM
PROTECT_75% Protect 75% of ROM
PROTECT_88% Protect 88% of ROM
WRT Program Memory Write Protected
PROTECTS Standard Code protection
PROTECTH High Code protection
SSSS Standard protection for secure segment
SSSH High protection for secure segment
RBS Boot Segment RAM code Protection

For the above mentioned reading protect + write not protect I was thinking in maybe:

Code:

#fuses PROTECT,NOWRT,NOWRTD,NOWRTB,NOWRTC


Edit: I tried to compile the fuses above with DSPic30F4012 (CCS 5.049), but it only worked with:

Code:

#fuses PROTECT,NOWRT


Any help would be appreciated!

Thanks in advance
Hugo
_________________
Hugo Silva


Last edited by younder on Wed Oct 07, 2015 8:09 pm; edited 3 times in total
temtronic



Joined: 01 Jul 2010
Posts: 9154
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Wed Oct 07, 2015 7:38 pm     Reply with quote

You need to now that 'fuses' are specific to a particular PIC so you can't just use a handful of them on a 'PIC' and expect it to work for you.
Hopefully the compiler will complain if you select a fuse that your PIC doesn't have BUT there could be a bug in the compiler so you should post which PIC you're using.
As for reusing a PIC, yes, whenever you totally erase a PIC you're starting 'fresh' so you will lose your program,EEPROM contents as well as the old 'fuses'. The important word here is 'totally' erase. Newer PIC do allow sections of memory to be 'protected' so you must read the datasheet for the PIC you're using.

Jay
younder



Joined: 24 Jan 2013
Posts: 53
Location: Brazil

View user's profile Send private message

PostPosted: Wed Oct 07, 2015 8:05 pm     Reply with quote

Jay, my mistake, I just forget to mention which pic I was using, I've already edited the original post.

So as long as I can 'totally' erase it and reprogram I will be fine...I did not test it because I was thinking it may not allow me to write chip again once I enable the fuse. However, should I include PROTECT and NOWRT or just PROTECT?

Thanks Buddy
Hugo
_________________
Hugo Silva
Ttelmah



Joined: 11 Mar 2010
Posts: 19306

View user's profile Send private message

PostPosted: Thu Oct 08, 2015 12:57 am     Reply with quote

Look at the file 'fuses.txt' in the directory with the compiler.
This is second only to the readme, in terms of 'vital data'. It gives the description of what each CCS fuse name means. Smile

Depends who you want to protect against. If you turn off the ability to do table reads, this will stop quite a few compiler functions that do things like access constant arrays from working, but if the code is only protected from reads, and not writes, if this is left on, then somebody could write a new small bootblock into the chip, and this could then contain code to read the rest of the chip....

So generally, protect the chip from external reads, and from writing, which then leaves your code able to work, but can't be overwritten without erasing the chip.
younder



Joined: 24 Jan 2013
Posts: 53
Location: Brazil

View user's profile Send private message

PostPosted: Sat Oct 10, 2015 9:04 am     Reply with quote

I've tried to include just:

Code:

#fuses PROTECT,NOWRT


But after that I was not able to re-write the chip again...I'm using Pickit 3 to load the HEX into the chip. Even after erase the chip, I was not able to write it again.

How to perform a 'totally erase' and reuse it again?

Thanks guys
Hugo
_________________
Hugo Silva
Ttelmah



Joined: 11 Mar 2010
Posts: 19306

View user's profile Send private message

PostPosted: Sat Oct 10, 2015 10:27 am     Reply with quote

That's the whole point of the protection....

There is a tick box for the Pickit, that should say 'erase all before programming'. It'll only erase, if the supply voltage is >4.5v. The chip will do a normal erase down to 3v, but bulk erase (which is what is needed to turn off the protection), requires 4.5v minimum.

This is why some boards have a jumper to disconnect the processor from the board supply, and you can then use the programmer to supply the chip. If however you have other circuitry on the board that can't accept this voltage, you are stuck..
younder



Joined: 24 Jan 2013
Posts: 53
Location: Brazil

View user's profile Send private message

PostPosted: Sat Oct 10, 2015 10:54 am     Reply with quote

I see Ttelmah, I will try then to use a different board to erase it. For sure this must be the issue (supply voltage <4,5v).

Thanks Buddy
Hugo
_________________
Hugo Silva
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group